我正在学习使用Git,但是,我想保持线性的历史.我刚刚完成了我的第一个功能分支.
我现在准备将它合并到我的主分支中.
我知道这样做的正确方法是重新设置功能分支或其他东西然后合并它?无论哪种方式,都有一些合并过程,以便您保留提交历史记录或其他内容.
我的主要分支叫做主人.功能分支称为import-publictalk-names.
发现这个问题:
使用tortoisegit将代码分支合并到master
所以我认为我已经成功地做到了这一点,这可以关闭:
我想我现在已经成功地做到了这一点:
创建新分支时,您基本上可以并行工作.但是,无论何时合并(如/sf/ask/17360801/中所述),功能分支中的所有更改都将集成到当前分支中.此时,您有一个同步点,以某种方式将您的更改放入当前分支(主)的历史记录中. - 如果在两个分支上编辑文件,可能会发生冲突,需要在额外提交之前重新完成合并.
如果您的master
分支上没有其他提交(参见图1),则正常合并将产生一条直线,该直线与主分支上的任何提交都不可分割(将仅分配主分支标签)到功能分支提交,参见图2).如果你想在日志上看到一个平行线,它通过合并提交光学合并到主分支中(一个提交有两个父节点而不是一个父节点,参见图3),你需要启用"No fast forward" "合并选项. - 如果主分支上有并行提交,您将始终获得合并提交(除非您选择"仅快进"). - 就像一个侧节点:文件在图2和图3中具有所有相同的内容,唯一的区别在于git中的元数据.
此外,有些人不喜欢这些提交在屏幕截图中是可视交错的.从git的角度看,正常的合并完全没问题.但是如果你想要一个straigt提交行,你需要在你想要合并你的更改的分支顶部重新设置你的功能分支(那么你是图1的情况).合并后的重新分支(作为快进合并或非快进合并).
为了使您的历史成为线性,"只是"通过将主设备重置为最后一次提交(并行设置,参见图4)并使用"硬重置"来恢复合并.然后检查你的功能分支并在主服务器上重新设置它(点击日志对话框中的主分支,然后点击"Rebase ... on this ...".然后你有了图片1的情况,你可以再次合并.
图1.在reorder-commits
没有并行提交的分支上进行简单开发master
:
图2.合并reorder-commits
到master
默认选项(即快进合并):
图3.合并reorder-commits
到master
"非快进"选项,注意合并提交与"合并分支..."消息和两个父提交:
图片4.通过"恢复"分支(硬)将master
分支重置为旧位置,使历史再次变为线性.