我有一个简单的场景:
2个分支:主人和 myownb :
myownb 位于主分支之前,提交了3次提交:
我需要的是“合并”这两个分支,但不是经典模式。
我希望将来自 myownb 的所有这3次提交推送到主分支的一次提交(最好使用不同的提交消息)。
或者创建这两个分支之间所有差异的补丁,稍后应用于我的主分支,并按照我的意愿提交。
答案 0 :(得分:3)
在这个例子中我要做的是执行交互式rebase。这将允许您执行您提到的所有操作(压缩到一次提交,并提供不同的提交消息)。
从myownb
开始,您会写git rebase -i HEAD~3
,因为您在分支master
之前提交了3次提交。在出现的对话框中,您应该按顺序看到3个提交,如:
您必须pick
一个,以便其他人有一个基础可以被压扁,因为第二次和第三次提交会将pick
更改为s
或squash
。完成后,保存并退出文件。完成后,将弹出提交消息窗口。
在此窗口中,您可以编写单个提交消息。删除它提供的所有通用消息并编写单个提交消息。完成后,保存并退出文件。
回到您的终端,您应该已经准备好了。运行git log
你会看到你现在拥有的只是提交给master的提交,然后是你之前提交的那三次提交的一次提交。
完成,git checkout master
然后git merge myownb