Git 从提交 N 变基到提交 B

Git rebasing from commit N to commit B

是否可以仅对 N 个提交列表中的特定提交进行变基?

我总共有 36 次提交,我想从提交 36 压缩到提交 12 让我们说(从 36 到 12 它们都是一个用户的提交并且都是针对单个功能),该怎么做?

您可以使用 interactive rebase 来执行此操作。

git checkout <branch_with_commits>
git rebase -i HEAD~36

这将打开一个编辑器,其中包含重新设置基线的所有提交以及为每个提交执行的操作,如下所示:

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

# Rebase 710f0f8..a5f4a0d onto 710f0f8
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

对于您要压缩的提交,将操作更改为压缩(或您要执行的其他操作)。保存并关闭编辑器以应用更改。