如何在git日志历史中合并不同的提交

时间:2013-04-03 09:26:26

标签: git commit rebase

假设我们提交了1-> 2-> 3-> 4-> 5 我认为历史可能太长了,我希望日志将1,2和3合并为一个,例如,1' - > 2> 3-> 4-> 5 我怎么能这样做,我应该使用rebase吗?似乎我无法在rebase之后推送到远程回购。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

首先进入交互式rebase模式

git rebase -i HEAD~5

(用你要压缩的提交数量替换为5)

然后按照git book Squashing commmits -part。

中的说明进行操作

From the git book:

  

也可以进行一系列提交并压缩它们   使用交互式变基工具进行单次提交。剧本   在rebase消息中提供有用的指令:

#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
     

如果您指定“壁球”,而不是“选择”或“编辑”,则Git适用   这两者都会在它之前发生变化和变化并使你合并   提交消息在一起。所以,如果你想做一个提交   从这三个提交中,您可以使脚本看起来像这样:

pick f7f3f6d changed my name a bit
squash 310154e updated README formatting and added blame
squash a5f4a0d added cat-file
     

当你保存并退出编辑器时,Git会应用所有三个更改   然后让你回到编辑器中合并三个提交消息:

# This is a combination of 3 commits.
# The first commit's message is:
changed my name a bit

# This is the 2nd commit message:

updated README formatting and added blame

# This is the 3rd commit message:

added cat-file
     

当你保存它时,你有一个引入的单一提交   所有三个提交的更改。