交互式rebase是重写历史的强大工具,可以用于编辑、删除、合并和重新排列提交。使用git rebase -i
命令进入交互模式。
启动交互式rebase
git rebase -i HEAD~<number-of-commits>
例如,重写最近的5次提交:
git rebase -i HEAD~5
编辑提交 在打开的编辑器中,你会看到类似如下的提交列表:
pick 1234567 Commit message 1
pick 89abcde Commit message 2
pick fedcba9 Commit message 3
选择操作
pick
:保留提交reword
:修改提交信息edit
:修改提交内容squash
:将该提交与前一个提交合并fixup
:将该提交与前一个提交合并,但丢弃该提交的信息drop
:删除提交保存并退出编辑器 根据需要修改后,保存并退出编辑器,Git会按照你的指示重写历史。
git commit --amend
用于修改最近一次提交的提交信息或内容。
修改提交信息
git commit --amend -m "New commit message"
修改提交内容
# 进行更改后
git add <modified-files>
git commit --amend
修改提交信息
git commit --amend -m "Updated commit message"
修改提交内容
# 进行更改后
git add <modified-file>
git commit --amend
启动交互式rebase
git rebase -i HEAD~3
合并提交
将第二个和第三个提交前的pick
修改为squash
或fixup
:
pick 1234567 Commit message 1
squash 89abcde Commit message 2
squash fedcba9 Commit message 3
保存并退出编辑器 Git会合并这些提交。
如果要更改远程仓库的提交记录,通过--force
强制推送远程仓库
// 强制推送远程仓库
git push origin branch-name --force
注意事项:
// 备份分支
git branch backup-branch