合并多个提交git

时间:2015-11-26 21:00:48

标签: git merge git-merge git-rebase

我在我的分支中有以下提交

$ git log --oneline --graph --decorate
*   aa2ea95 (HEAD, CentralCache_Stats) Merge branch 'CentralCache_Stats' of githu
|\  
| *   a49d7ef (origin/CentralCache_Stats) Merge branch 'master' of github.com:gsh
| |\  
| | * a8c5405 (origin/master, origin/HEAD, master) [744] New API for central cach
| * | b632ef3 [744] New API for central cache information
| |/  
* | 4ece441 [744] New API for central cache information
|/  
* 64892ae lower default transfer batch size down to 512

Ahhh such a mess

现在我想将我的所有提交合并为一个。

git rebase 
s aa2ea957db6bf5f097b0e2f046c4c3f76758c6d9 Merge branch 'CentralCache_Stats' of gi
p 4ece4416421334e8be75893ef1416bb8509d2a44 [744] New API for central cache informa
p a49d7ef9f2e0c7adedb8dee96f79ce1d9e2855db Merge branch 'master' of github.com:gsh
p b632ef35f7776e365e36b508d8e490b429646317 [744] New API for central cache informa
p a8c54056cb3012fb8da7221b419857422b168046 [744] New API for central cache informa
p 64892ae730b704a7f3f23bd8eaeaf206901df201 lower default transfer batch size down 

一个解决方案是我通过git reset HEAD ^ n返回并执行commit --amend,但问题是我已经更改了很多代码,因此解决冲突将是问题

我试过

git log
commit 6bf5f097b0e2f046c4c3f76758c6d9
Merge: 4ece441 a49d7ef
....

commit 4ece4416421334e8be75893ef1416bb8509d2a44
....

commit a49d7ef9f2e0c7adedb8dee96f79ce1d9e2855db
Merge: b632ef3 a8c5405
....

commit b632ef35f7776e365e36b508d8e490b429646317
....

commit a8c54056cb3012fb8da7221b419857422b168046
....

commit 64892ae730b704a7f3f23bd8eaeaf206901df201
....

如果没有事先提交,我就会收到错误

.pipe(autoprefixer(config.tasks.css.autoprefixer))

如何合并或解决此问题?

1 个答案:

答案 0 :(得分:0)

你只需要关心你的主分支中的提交。例如,如果您的历史记录如此,请使用I

上的HEAD
master   A---B---H-------I
              \         /  
branch1        C---E---G
                \     /
branch2          D---F

然后,在这种情况下,您可以git reset A --mixed A HEAD~3。现在,HEAD已经A并且--mixed离开了您的更改,您应该能够立即提交所有更改。