变基与整理提交历史
git rebase 把当前分支的提交重新应用到新的基线上,能形成线性历史。交互式 rebase 可以合并、改写、排序和删除提交;已共享的历史不要随意改写。
git rebase main
git rebase -i HEAD~5
git rebase --continue
git rebase --abort
git rebase --skip
git rebase --onto main feature-base feature
git rebase -i --autosquash main
git rebase --update-refs main
git rebase --autostash main
交互命令:
pick 保留提交
reword 修改提交信息
edit 停下来修改
squash 合并到上一个提交
fixup 合并并丢弃信息
drop 删除提交
--force-with-lease,并提前通知。git add 再 --continue;放弃用 --abort。squash/fixup 会改变提交数量和哈希;依赖这些提交的分支要同步。--autosquash 需要 fixup!/squash! 提交信息前缀。--update-refs 会同步更新相关分支,不理解时先备份。git reflog,误操作可以找回。--autostash 只临时保存改动,冲突时仍要手动处理。git — 版本控制git-cherry-pick — 挑选单个提交git-reflog — 恢复误操作