git checkout远程分支显示无关文件?

时间:2009-11-18 03:34:49

标签: git branch git-checkout subtree

master分支有这些文件和文件夹(简化):

C:\Local\TickZoom\Project>ls
file.txt         name.txt      public

公共分支正在跟踪供应商存储库并且已经是子树 合并为上面主分支中的公用文件夹。公众有三个 仅文件夹(简化):

C:\Local\TickZoom\Project>ls
platform  providers  www

从公共模式切换到主模式时,它的行为正确。

然而,当从主人切换到公共时,会发生奇怪的事情。 它包含两者的所有文件和文件夹:

C:\Local\TickZoom\Project>git checkout public

C:\Local\TickZoom\Project>ls
file.txt  name.txt   public
platform  providers  www

然而,检查git状态表示没有任何改变。

我发现'git reset --hard'修复了公众。

CLUE:似乎只有在进行新提交后才会发生这种情况 掌握。 git是否会进行某种自动合并?

'git reset --hard'之后,结帐并掌握并返回 公共工作很好,即使反复。

第一个,我认为它是固定的,但它再次发生了 下次我做了改变。让我再试一次 现在要确保......

现在,我无法重现它。但确实发生了两次。

另一个CLUE是我第一次进行git重置 - 硬 它抱怨文件被进程锁定。

在违规程序关闭后,git重置 - 硬盘 成功,然后两个分支机构之间的结账工作。

结账也被锁定的文件弄糊涂了 “默默地”失败?它会更好,这是问题所在 失败的方式与git reset相同 - 硬件不仅仅是报告 成功并拥有混乱的工作空间。

在git checkout上设置任何其他智慧或选项以避免这种情况 将不胜感激。

韦恩

2 个答案:

答案 0 :(得分:6)

您可以使用以下方法清除所有未跟踪文件

git clean -dfx

在运行此命令之前,确保确实不是任何未跟踪的文件!

答案 1 :(得分:3)

用此来解决

git clean -f -d -X

这只清除.gitignore忽略的文件以及包含它们的所有空目录。

我现在在检查来自完全不同的存储库的分支之前在脚本中执行此操作。

在同一软件之间切换分支时,这不是一个问题。

韦恩