2017-04-26 168 views
0

我已阅读git book的基础知识,试图将分支蓝色与分支蓝色合并为一条直线。为了更容易地查看历史,我尝试只有一个分支并且没有连接。我有什么选择可以做到这一点,什么是最好的?如何线性化Git中的“分裂”合并历史记录?

This答案暗示为reset --soft,但这里的演示假设合并后增长很多。 在af之前或最好在9c提交之前,将分支蓝色更改添加到红色是可以的。

* 5356e62 vimdiff solved 
* c1ccf86 red forward 
* 51fbd33 Merge branch 'blue' into red 
|\ 
| * 96575dc new file 
| * 1d7f531 some line and blue branch 3 
* | 9cc3291 new file 
* | 92569c6 another commit 
* | f8d3ab2 blue branch 3 
|/ 
* af8b651 init 

回答

0

买者 - 做什么你问移动参考“落后”(有效去除一些提交)的所有方法;如果这些提交已与其他开发人员共享,则会产生问题。请参阅git rebase关于从上游重新分配资产中恢复的文档,并了解虽然这是以重新分配方式记录的,但它适用于所有历史记录编辑。

如果git reset --soft是对上一个问题的合理答案,这里同样合理。

git checkout 5356e62 
git reset --soft 9cc3291 

现在所有从1d7f531变化以后出现阶段性变化,所以

git commit 

创建一个新的承诺是“南瓜”老犯成一体。

此时如果您有一个分支指向96575dc,那么它将显示为未合并。 OTOH如果父分支以前是唯一可以达到96575dc的分支,那么96575dc现在无法访问;但如果你不需要详细的历史记录,那也没问题,因为相关的更改在你的新提交中。

一个稍微更一般的解决方案是merge --squash,更一般的将是rebase --interactive

相关问题