0

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

4

1 回答 1

0

首先进入交互式变基模式

git rebase -i HEAD~5

(将 5 替换为您想要压缩的提交次数)

然后按照 git book Squashing commmits -part 中的说明进行操作。

来自 git 书:

也可以使用交互式变基工具进行一系列提交并将它们压缩为单个提交。该脚本在 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.
#

如果您指定“squash”而不是“pick”或“edit”,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

当您保存它时,您有一个提交,其中介绍了所有三个先前提交的更改。

于 2013-04-03T09:32:55.230 回答