功能:
在另外一个提交的上方重新应用提交,提交包括upstream-HEAD之间的所有提交,提交应用到HEAD上。
命令格式:
git rebase [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>]
[<upstream> [<branch>]]
upstream
,相当于开始应用提交前执行了 git reset --hard <upstream> (或者 <newbase>)
不指定,使用配置 branch.<name>.remote 和 branch.<name>.merge
中的值,如:
branch.main.remote=origin
branch.main.merge=refs/heads/main
所有位于 <upstream>...HEAD
之间的提交都会被重新应用,故可以使用 git log <upstream>..HEAD
来确认将会被应用的提交有哪些
git log --oneline my-test...HEAD
git checkout <branch>
git rebase
:会将远程跟踪分支的提交重新应用到当前本地分支(newbase = upstream = 远程分支 )git rebase my-test main
: 先切到分支 main,然后应用my-test…main之间的提交到HEAD(new-base=upstream=my-test, branch = main)rebase 前:
E---F---G---H---I---J topicA
执行命令:
git rebase --onto topicA~5 topicA~3 topicA
--onto topicA~5
会使得 reset 到提交 EtopicA~3 topicA
会选取提交H---I---J
结果:
E---H'---I'---J' topicA
F、G 被移除了