【问题标题】:Git: how to create different unmerged states?Git:如何创建不同的未合并状态?
【发布时间】:2010-06-11 09:24:27
【问题描述】:

什么时候会出现不同的git status 未合并状态,例如added by usadded by themboth deleted

我尝试通过执行合并来重现后者,其中文件已在当前分支和合并源分支中被删除,但我无法创建此状态。

【问题讨论】:

  • “都删除了”?是关于章鱼合并吗?怎么会是平时的双亲合并呢?
  • 这正是我想知道的。

标签: git git-status


【解决方案1】:

您可以通过在每个分支中以不同的方式重命名文件来获得全部三个。

git init
touch foo
git add foo
git commit -m 'initial commit'
git checkout -b tmp
git mv foo X
git commit -m 'rename to X'
git checkout -
git mv foo Y
git commit -m 'rename to Y'
git merge tmp

现在您拥有所有三个状态。

$ 混帐状态 # 在分支master上 # 未合并路径: # (酌情使用“git add/rm ...”来标记分辨率) # # 由他们添加:X # 由我们添加:Y # 都删除了:foo # 没有添加任何更改提交(使用“git add”和/或“git commit -a”)

【讨论】:

  • 不错的演示。这帮助我了解了我们与他们的含义。如果我在分支 A 并在分支 B 中合并,则分支 A 是“我们”,分支 B 是“他们”。
  • 另外——你的例子教会了我git checkout -,就像cd -;它的意思是“在切换到这个分支之前检查我所在的分支。”对于其他发现此问题的人,它仅在两个分支之间切换;它不保留历史记录。
  • 从 Git 1.9.3 开始,这个例子似乎不再起作用:没有产生合并冲突。
  • 啊,感谢您指出这一点。 git.git 中的t/t7060-wtstatus.sh 包含所有案例。它们很难破译,所以每当我有空闲时间时,我都会尝试更新我的答案。
  • 我可以在 git 2.7.4 上确认这一点:没有冲突。 – 但我确实在其他地方有“我们添加”...仍然不确定“添加”如何冲突...
猜你喜欢
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 2013-06-17
  • 2019-09-01
  • 1970-01-01
相关资源
最近更新 更多