猫咪版 Git 命令图解

猫咪版 Git 命令图解
踱鸽&水晶蟹猫咪版 Git 命令图解
这套图来自国外创作者 Lynn Skursky 的”Git Purr”系列,用猫咪的行为类比 Git 核心命令,画风幽默但讲得挺准确。第一次看到时感觉比很多文字教程直观,收藏下来,顺手加了一些自己的理解注释。
图里的角色说明:猫咪对应本地仓库,云端/猫咪聚集地对应远程仓库,毛球/玩具对应 commit。
git purr(git pull)
git pull = git fetch + git merge。从远端把最新的 commit 抓下来,直接合到当前分支。
日常用得最多,但多人协作时容易产生一堆多余的 merge commit,让提交历史看起来乱。如果想保持线性历史,可以改用 git pull --rebase。
git meowge(git merge & git rebase)
merge:把两个分支的历史合并,保留所有提交记录,会产生一个 merge commit。历史真实,但图形复杂。
rebase:把当前分支的提交”搬”到目标分支的末端,历史是线性的,看起来干净。代价是改写了 commit 的 hash,已推送到远端的分支不要随意 rebase,会让协作者的历史乱掉。
我的习惯:个人开发分支用 rebase 保持历史整洁,向主干合并用 merge 保留分支记录。
git puss(git push)
把本地的 commit 推到远端。如果远端有你没有的新提交,push 会被拒绝,需要先 pull 再 push。
踩过一次坑:feature 分支 rebase 完之后强推(git push -f)把同事的提交覆盖了。后来改成 git push --force-with-lease,这个命令在远端有别人的新提交时会拒绝推送,安全很多。
git cherry-pick & git log
cherry-pick:从其他分支”摘”一个或几个 commit 过来,不需要整个分支的改动。
用过最典型的场景:hotfix 分支修了一个线上 bug,需要同步到开发分支,但开发分支还有一堆未完成的功能不能直接 merge。这时候 cherry-pick 单独把那个修复 commit 拿过来就够了。




