master 分支有这些文件和文件夹(简化):
C:\Local\TickZoom\Project>ls
file.txt name.txt public
公共分支正在跟踪供应商存储库,并且已在上面的主分支中合并为公共文件夹的子树。public 只有三个文件夹(简化):
C:\Local\TickZoom\Project>ls
platform providers www
从 public 切换到 master 时,它的行为正确。
但是,当从 master 切换到 public 时,会发生一件奇怪的事情。它结合了两者的所有文件和文件夹:
C:\Local\TickZoom\Project>git checkout public
C:\Local\TickZoom\Project>ls
file.txt name.txt public
platform providers www
但是,检查 git status 表明没有任何改变。
我发现 'git reset --hard' 修复了 public 。
CLUE:似乎这只发生在对 master 进行新的提交之后。git 会做某种自动合并吗?
在 'git reset --hard' 之后,即使重复,也可以正常结帐并返回公共工作。
第一次,我认为它已修复,但下次我进行更改时再次发生。现在让我再试一次以确保...
现在,我无法重现它。但它确实发生了两次。
另一个线索是,我第一次执行 git reset --hard 时抱怨文件被进程锁定。
关闭有问题的程序后, git reset --hard 成功,然后结帐在两个分支之间工作。
那么结帐是否会因文件被锁定和“静默”失败而感到困惑?更好的是,这就是失败的问题,就像 git reset --hard 一样,而不仅仅是报告成功并拥有一个混乱的工作空间。
在 git checkout 上设置任何其他智慧或选项以避免这种情况将不胜感激。
韦恩