在前提交中表示Git合并(假合并)

时间:2014-07-26 02:25:11

标签: git

我有两个分支,上游。偶尔,上游被导入/合并到master中。

如何将这些重新绑定在一起?

用图表解释起来要容易得多:

我有:

A--B--C--D--E--F--G--H
\     |
 |    /
 \   /
  X--Y--Z

应该(我想要):

A--B--C--D--E--F--G--H
\     |       /
 |    /   ___/
 \   /   /
  X--Y--Z

知道有一种方法(使用管道命令)。

1 个答案:

答案 0 :(得分:2)

知道了!

对于那些遇到同样问题的人来说,这就是我的所作所为。请参考此处的图表,而不是原始帖子(为了清楚起见,我添加了一些提交)。

首先,从日志中获取该提交的时间戳。如果我们稍后不使用这些时间戳,我们的新合并将具有比提交G..K更新的时间戳!因此,请git log --format=fuller使用CommitDate和AuthorDate查看每个提交的日志。在示例场景中,我们要查找的时间戳来自提交E。然后:

在:

A--B--C--D--E--F--G--H--I--J--K         master
\     |
 |    /
 \   /
  X--Y--Z                               upstream

命令:

git branch temp
git reset --hard E
GIT_AUTHOR_DATE="..." GIT_COMMIT_DATE="..." git merge Z
git cherry-pick G..K

后:

A--B--C--D--E--F--G--H--I--J--K         master
\     |       /
 |    /   ___/
 \   /   /
  X--Y--Z                               upstream