当"git status"显示所有分支上的跟踪文件更改时,"git checkout -f"有什么用



我有一个跟踪文件(一个旧版本的文件),我在主分支上修改。主分支上的状态显示这个文件被修改了,但是主题分支上的状态也显示该文件已被修改。

之前有一个错误"error: You have local changes to "X";

当我签出到另一个分支时,不能切换分支,而不做一个隐藏或没有在git-checkout中使用"-f"。

我已经检查了"stackoverflow.com/questions/1304626/git-switch-branch-and-ignore-any-changes-without-committing",但该错误没有发生,即使我有本地更改也能检查。

是否有任何类型的配置导致这种混乱?

除非您提交,否则修改的更改不是任何分支的一部分,而是适用于您的工作目录,并且签出另一个分支将把这些更改也带到另一个分支(除非存在冲突)

如果您不希望在master中所做的更改在签出时出现在其他分支中,则要么提交更改,要么隐藏更改

看起来您要切换到的分支与您从的分支处于相同的状态。每个分支都是提交树上的指针。因此,如果两个分支指向同一组提交,您可以在它们之间切换,而无需签入本地更改。原因在于,在实际提交更改之前,将更改提交到哪个分支对git没有影响。然而,一旦您提交了更改,那么一个分支有了它,而另一个没有,并且它们的历史记录现在是不同的。

try

git reset --hard HEAD

最新更新