更改分支而不传递未提交的更改

时间:2018-01-25 09:37:56

标签: git switch-statement git-checkout

我在我的分支 DEV ,我修改文件 A.txt ,当我这样做时:

git checkout master

而不是拒绝git checkout并建议做git stash,而是通过我未提交的更改

像这样:

(DEV) $ git checkout master
M A.txt
(master) $ git status
modified A.txt

这是我的同事最近遇到的一个问题,它应该是什么原因? 我以前没有这个问题..

谢谢

3 个答案:

答案 0 :(得分:0)

documentation of git checkout

中对此进行了解释
  

git checkout <branch>

     

要准备处理<branch>,请通过更新工作树中的索引和文件,并将HEAD指向分支来切换到它。保留对工作树中文件的本地修改,以便将它们提交到<branch>

如果无法在从指定分支检出的相应文件上成功应用本地更改,则结帐将失败。

答案 1 :(得分:0)

如果分支指向同一个提交,我只能重现这个 在您的方案DEVmaster

否则我会收到一条消息:

error: Your local changes to the following files would be overwritten by checkout:
    Tests/ACInteractorTests/InteractorErrorTests.swift
    Tests/ACInteractorTests/LazyInteractorTests.swift
Please commit your changes or stash them before you switch branches.

对我来说,只要您的新分支仍指向与旧分支相同的提交,git就不会抱怨,这看起来很方便。

注意:我的git GUI客户端Tower for Mac总是抱怨。

答案 2 :(得分:0)

经过多次测试后,我终于明白了GIT的真正功能。

只要未提交,它就会传递我的更改,但是一旦我提交,修改就不会通过。

从那里(在第一次提交之后),如果我对这些相同的文件进行更改并尝试更改分支,GIT不允许我并建议我进行Stash。

所以我通过测试涵盖了所有可能的案例,感谢您的答案,这些答案帮助我找到了解决问题的方法(这是为了更好地理解GIT的操作)。