我git-new-workdir
曾经为一个 git 存储库拥有两棵工作树。这通常效果很好,但是如果在两个工作树中签出相同的分支,则在提交某些内容后我会出现有趣的行为:
- 我从干净的工作树和“master”开始。
- 我在工作树 A 中提交了一些东西。
结果:
- 工作树 A 中的“git status”显示“干净”(如预期的那样)
- 工作树 B 中的“git status”突然显示“要提交的更改”
显示的更改与我刚刚在 A 中所做的提交相反。例如,如果 A 中的提交添加了一行,则 B 中的“要提交的更改”显示该行已被删除。
这里发生了什么?这是 git-new-workdir 的已知限制吗?有没有办法避免这个问题?或者我应该避免在两个副本中签出同一个分支时签入?
我也有兴趣了解内部发生的事情(我对 git 的内部结构知之甚少)。
笔记:
我发现问题很容易通过
git reset--hard
在 B 中运行来解决,如果 B 在 A 中提交之前没有未提交的更改。
但是,如果我在 A 中提交,而 B 中有未提交的更改,则真正的未提交更改与提交中的虚假更改混合在一起,并且似乎没有简单的方法可以解开它们。因此问题。