我在我的分支 DEV ,我修改文件 A.txt ,当我这样做时:
git checkout master
而不是拒绝git checkout
并建议做git stash
,而是通过我未提交的更改
(DEV) $ git checkout master
M A.txt
(master) $ git status
modified A.txt
这是我的同事最近遇到的一个问题,它应该是什么原因? 我以前没有这个问题..
谢谢
答案 0 :(得分:0)
documentation of git checkout
:
git checkout
<branch>
要准备处理
<branch>
,请通过更新工作树中的索引和文件,并将HEAD
指向分支来切换到它。保留对工作树中文件的本地修改,以便将它们提交到<branch>
。
如果无法在从指定分支检出的相应文件上成功应用本地更改,则结帐将失败。
答案 1 :(得分:0)
如果分支指向同一个提交,我只能重现这个
在您的方案DEV
和master
。
否则我会收到一条消息:
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的操作)。