当当前分支上有未提交的更改时,签出另一个分支

当当前分支上有未提交的更改时,签出另一个分支

大多数情况下,当我尝试签出另一个现有分支时,Git不允许我在当前分支上有一些未提交的更改。因此,我必须首先提交或保存这些更改。

但是,偶尔Git允许我签出另一个分支,而无需提交或保存这些更改,并且它会将这些更改携带到第一分支签出。

这里的规矩是什么?这些改变是阶段性的还是非阶段性的?把这些变化带到另一个分支对我来说没有任何意义,为什么git有时会允许它呢?也就是说,它在某些情况下有用吗?


胡说叔叔
浏览 2097回答 3
3回答

蝴蝶刀刀

如果新分支包含与该特定更改文件的当前分支不同的编辑,则在提交或存储更改之前,它将不允许您切换分支。如果更改后的文件在两个分支上都是相同的(即该文件的提交版本),那么您可以自由切换。例子:$ echo 'hello world' > file.txt $ git add file.txt $ git commit -m "adding file.txt" $ git checkout -b experiment $ echo 'goodbye world' >> file.txt $ git add file.txt $ git commit -m "added text"      # experiment now contains changes that master doesn't have      # any future changes to this file will keep you from changing branches      # until the changes are stashed or committed $ echo "and we're back" >> file.txt  # making additional changes $ git checkout master error: Your local changes to the following files would be overwritten by checkout:     file.txt Please, commit your changes or stash them before you can switch branches. Aborting这既适用于未跟踪的文件,也适用于跟踪的文件。下面是一个未跟踪文件的示例。例子:$ git checkout -b experimental  # creates new branch 'experimental' $ echo 'hello world' > file.txt $ git add file.txt $ git commit -m "added file.txt" $ git checkout master # master does not have file.txt $ echo 'goodbye world' > file.txt $ git checkout experimental error: The following untracked working tree files would be overwritten by checkout:     file.txt Please move or remove them before you can switch branches. Aborting一个很好的例子可以解释为什么你想在做改变的时候在分支之间移动,如果你正在做一些关于主的实验,想要提交它们,但是还没有掌握。$ echo 'experimental change' >> file.txt # change to existing tracked file    # I want to save these, but not on master $ git checkout -b experiment M       file.txt Switched to branch 'experiment' $ git add file.txt $ git commit -m "possible modification for file.txt"
打开App,查看更多内容
随时随地看视频慕课网APP