【发布时间】:2018-04-03 17:24:21
【问题描述】:
我的分支中几乎没有提交,提交 A、提交 B、提交 C,然后我在我的分支中合并了 master,因为提交 D、提交 E、提交 F 现在在我的提交之上。如何将提交 A、B、C 压缩为单个提交?
【问题讨论】:
-
这很棘手,因为您在 A、B 和 C 之上有一个合并提交。
我的分支中几乎没有提交,提交 A、提交 B、提交 C,然后我在我的分支中合并了 master,因为提交 D、提交 E、提交 F 现在在我的提交之上。如何将提交 A、B、C 压缩为单个提交?
【问题讨论】:
所以你有这个:
master -----D---E---F--\
work_branch \---A---B---C--* (merge-Point)
所以你创建了一个头在 C 上的分支
git checkout <sha1 at C>
git checkout -b work_branch_2
然后使用交互式变基
git rebase -i
这将打开一个编辑器,其中包含每次提交时要执行的操作列表:
pick <sha1 A> comment A
pick <sha1 B> comment B
pick <sha1 C> comment C
在线提交 B 和 C 用 squash 替换 pick
pick <sha1 A> comment A
s <sha1 B> comment B
s <sha1 C> comment C
所以你会得到这个:
master -----D---E---F--\
work_branch \---A---B---C--* (merge-Point)
work_branch_2 \---A'
我建议在此之后你变基而不是合并 git rebase master
注意:您可以根据需要为每次尝试创建分支,只需推送正确的分支 :)
【讨论】: