1

我想通过删除所有以前的提交并只保留最新的提交来清理我的提交历史。我怎么能在 git 中做到这一点?我确实尝试过

git rebase -i..但这似乎以流血告终,我最终脱离了我的头.. git prune --expire似乎也不起作用。

所以如果我有 1 到 10 个提交。我现在只想保留第 10 个。所有这些都是本地的。因此,当我决定推动时,我只推动 10。

4

1 回答 1

3

该过程在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.
#

如果您指定“squash”而不是“pick”或“edit”,Git 会应用该更改及其之前的更改,并使您将提交消息合并在一起。所以,如果你想从这三个提交中进行一次提交,你可以让脚本看起来像这样:

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

如果您不想将 seceral 提交压缩为一个,但实际上完全删除了提交,那么请执行脚本告诉您的操作:

# If you remove a line here THAT COMMIT WILL BE LOST.
于 2012-12-27T12:14:35.987 回答