【发布时间】:2013-05-05 15:03:18
【问题描述】:
当git diff other_branch 显示差异而git merge other_branch 什么都不做时,我感到很困惑。将“缺失”代码合并到 my_branch 中的正确方法是什么?
这个SO answer 描绘了一个与我类似的情况。
o---A---B---C-------G my_branch
\ \ /
--*D*---E---F other_branch
令人惊讶的是,D 中的更改不会自动合并到 my_branch 中
git checkout my_branch
git merge other_branch
将F引入G
我当然可以manually create a patch 并将其应用到my_branch,如下所示:
git diff other_branch my_branch > patchfile
git checkout my_branch
patch -p1 < patchfile
但我想正确地做到这一点,而不会弄乱 git 日志。使用补丁方法,git 将记录 D 和我的最新补丁中的更改,因为它们彼此独立发生(代码搅动)。我想简化git log 并确保其他人在执行git merge my_branch 时不会发生意外的事情(悄悄地和隐蔽地)。
【问题讨论】:
-
您是否尝试将
my_branch合并到other_branch中?可能这可以解决分歧。如果某些提交在my_branch而不是在other_branch中被还原,你最终会遇到这样的情况。 -
@iltempo,我在您发表评论后尝试了合并,是的,它确实解决了差异,git diff 现在很干净。我只需要相信它会适当地合并。
-
@iltempo,我并没有故意恢复
my_branch中的任何更改,但很可能有——通过在结帐和编辑之间摇摆后在 sublime(文本编辑器)中保存并穿插提交。我需要对这一切更加小心。