我正在学习git,对于在主题分支中创建的暂存文件在签入母版时没有被删除感到惊讶。
例如:
git checkout -b topic
nano newfile.txt
git add newfile.txt
git checkout master // newfile.txt is still in the working directory, even though it was created in topic branch
我很清楚git clean
命令,只是我希望如果签出到另一个分支,所有从未提交的文件都将被删除。
我在这里缺少什么吗?还是git的预期行为?
答案 0 :(得分:3)
这是预期的行为。如果我不得不描述它(欢迎任何人对我的解释提出异议),那是因为您的newfile.txt
尚未签入,并且master
分支中的任何内容都没有与{{1 }},newfile.txt
不应删除尚不负责的文件。在正常情况下,我们不希望git
爬行并修改尚未添加到存储库中的文件。另一方面,如果文件已添加到仓库中,git
要删除更改是公平的游戏。
也就是说,正如您已经建议的那样,可以通过git
命令在目录中删除这些类型的文件。
答案 1 :(得分:0)
作为结帐后git clean
的替代方案,您仍然可以切换到其他分支,同时使用新的[实验性]命令git switch
放弃当前更改。
那将需要Git 2.23(Q3 2019)
git checkout -b topic
nano newfile.txt
git add newfile.txt
git switch -f master # newfile.txt would be gone.
这仅需要一个命令(git switch
),而不是两个命令(checkout
+ clean
)