Git 提交已在不同的分支上结束
我有以下提交/分支结构:Git 提交已在不同的分支上结束,git,Git,我有以下提交/分支结构: | * 03dd257 - (HEAD, solutions) ... |\ | * 7976266 - (master) ... * | 9ce9158 - ... |/ * d2a4d81 - ... 我的流程是: 提交d2a4d81(主控) 创建分支解决方案 提交9ce9158(解决方案) 提交7976266(主控) 将主机合并到解决方案(提交03dd257) 主机上的ammend提交7976266 现在我的提交在主控和解决方案上有所不同。如何安
|
* 03dd257 - (HEAD, solutions) ...
|\
| * 7976266 - (master) ...
* | 9ce9158 - ...
|/
* d2a4d81 - ...
我的流程是:
- 提交d2a4d81(主控)
- 创建分支解决方案
- 提交9ce9158(解决方案)
- 提交7976266(主控)
- 将主机合并到解决方案(提交03dd257)
- 主机上的ammend提交7976266
我对solutions branch做了进一步的更改,因此我不能简单地重置为9ce9158并再次合并。如果您这样做,合并提交仍将指向旧的(未修改的)提交,并且您的树将如下所示:
| * XXXXXXX - amended commit
* | 03dd257 - (HEAD, solutions) ...
|\ |
| * | 7976266 - (old master) ...
* |/ 9ce9158 - ...
|/
* d2a4d81 - ...
您可能要做的是在合并之前将解决方案分支重置回,并执行新的合并。如果您还没有发布任何内容(而且由于您修改了内容,您可能没有发布),那么可以这样做。假设通过修改
7976266
生成的新提交是7976266-v2
我想您希望7976266-v2
中的更改也出现在solutions
中,而不会使图形过于复杂
首先,在7976266-v2
创建一个amend
分支:
git branch amend 7976266-v2
然后,在7976266
和7976266-v2
之间的“重基”更改为解决方案
git rebase --onto solutions 7976266 amend
这将在03dd257
之后创建一个新的提交,其中包含7976266
和7976266-v2
之间的更改,并由amend
分支立即指向
* sth_new - (amend)
|/
* 03dd257 - (solutions) ...
|\
| * 7976266 - (master) ...
* | 9ce9158 - ...
|/
* d2a4d81 - ...
现在,您可以在需要时将
amend
合并到solutions
上。如果您不关心提交内容,我认为简单的合并就可以了。这并不是我真正想要的,因为我在03dd257之后还有一些其他提交,不想丢失它们。事实上,我确实重置了,因为这只是一个小的提交,但对于未来来说,拥有更好的解决方案会很好。最后我没有使用它,我重置为9ce9158,并再次合并。然而,据我所知,你的答案部分解决了问题,因此我可以接受它,只要你更新分支的“图表”,就像aragaer的答案一样(如果我错了,请纠正我)。我相信这就是我们可以使用回基
得到的结果。据我所知,它所做的是通过重放更改,找到2次提交(d2a4d81)的最新共同祖先,将路径跨度(7976266--d2a4d81--amend)复制到解决方案
,并指向新内容的提示。