基础的 commit、push、pull 只是 Git 的皮毛。要高效协作和处理复杂场景,需要掌握进阶命令。

一、rebase:变基

rebase 把当前分支的提交"挪"到另一个分支顶端,让历史更线性。

# feature 分支基于过时的 main
git checkout feature
git rebase main     # 把 feature 的提交重放到最新 main 上

对比 merge:merge 会产生合并提交,历史是网状的;rebase 让历史线性整洁。

黄金法则:不要 rebase 已经推到公共分支的提交,否则会给同事造成地狱。rebase 只用于本地未共享的提交。

二、解决 rebase 冲突

git rebase main
# 冲突时:
# 1. 手动解决冲突文件
# 2. git add .
# 3. git rebase --continue
# 或放弃:git rebase --abort

三、cherry-pick:摘樱桃

把某个特定提交应用到当前分支,不需要整个分支合并。

git cherry-pick abc123      # 把提交 abc123 摘过来

场景:在 main 修了个 bug,想把这个修复同时应用到 release 分支。

四、stash:暂存

工作做到一半要切分支,又不想提交半成品?

git stash             # 暂存当前改动
git checkout other    # 切走办事
git checkout original
git stash pop         # 恢复改动

五、reflog:救命稻草

误删分支、reset 错了?reflog 记录所有操作,能找回:

git reflog             # 看所有 HEAD 移动记录
# 找到误删前的 commit
git reset --hard abc123  # 回到那个点

六、reset vs revert

七、团队工作流

常见的 Git Flow:

八、小结

Git 进阶命令是处理复杂场景的利器。rebase 整洁历史、cherry-pick 精准移植、stash 灵活暂存、reflog 终极后悔药。多在实际项目中用,熟能生巧。