【问题标题】:Artificially make one commit point to another one after manual merge?手动合并后人为地将一个提交点指向另一个提交点?
【发布时间】:2016-05-18 12:25:59
【问题描述】:

我就是这样的git状态:

git checkout outer之后:

* 2df9c6b (HEAD -> outer) Ready for merging
* 161c98f Working on new stuff..
* faec47b Welcome to branch `outer`
* d2166d0 last common commit
...

git checkout master之后:

* 82c6303 (HEAD -> master) Go on doing stuff
* d2166d0 last common commit
* ...

在没有冲突的情况下运行git merge outer 之后,我得到了一些东西 喜欢:

* 6ebd696 (HEAD -> master) Merge branch 'outer' into master
|\
| * 2df9c6b (outer) Ready for merging
* | 82c6303 Go on doing stuff
| * 161c98f Working on new stuff..
| * faec47b Welcome to branch `outer`
|/
* d2166d0 last common commit
...

但是。自动合并结果不是我真正想要的 有。所以我运行git reset 82c6303 --hard 重新开始:

git merge outer --no-commit
... fixing stuff, merging on my own ..
git add *
git commit -m "Merged branch 'outer' into master"

我现在拥有的是:

* 3d1250b (HEAD -> master) Merge branch 'outer' into master
* 82c6303 Go on doing stuff
* d2166d0 last common commit
* ...

即:commit 3d1250b 就像我想要的那样,但它并不指向 2df9c6b 了。我怎样才能让它指向 2df9c6b 以使它 清楚发生了什么?它甚至意味着什么?

【问题讨论】:

  • 3d1250b 指向哪些提交?
  • @DavidDeutsch 3d1250b 指向82c6303,而6ebd696 曾经指向82c63032df9c6b。似乎“合并提交”是一个特殊的提交..
  • 3d1250b 确实也应该指向这两个提交;你确定你没有做git merge --abortgit merge outer --no-commitgit commit 之间的任何事情吗?
  • @DavidDeutsch 嗯..只有vimgit loggit diff 我想..你认为我可能只是以某种方式破坏了我的合并操作吗?

标签: git merge branch git-commit


【解决方案1】:

因此,除非您在 git merge outer --no-commitgit commit -m "Merged branch 'outer' into master" 之间做了一些时髦的事情,否则我不知道为什么您的提交没有记录为合并提交(即为什么它没有两个父级)。但是,假设 3d1250b 在合并后确实包含您想要的快照,以下将创建一个指向 3d1250b2df9c6b 的“空”提交,这是一个“正确”的历史记录:@987654326 @。

【讨论】:

    猜你喜欢
    • 2017-05-07
    • 2023-01-12
    • 2012-09-13
    • 1970-01-01
    • 2021-12-07
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    相关资源
    最近更新 更多