代码只有“现在”
文件被覆盖后,很难知道谁改了什么;多人同时修改时,也容易互相覆盖。
Git 不只是“记命令”。它是一套记录变化、切分工作、多人协作的系统。先看懂数据如何流动,命令自然就有了位置。
ONE SENTENCE
“把一组有意义的改动,
安全地交给团队。”
先从“为什么需要它”开始。
有了问题,后面的概念
才会各就各位。
文件被覆盖后,很难知道谁改了什么;多人同时修改时,也容易互相覆盖。
每次有意义的改变,都可以留下一个可回看的版本。版本之间的差异和来源都能追溯。
每个人先在自己的工作线上完成改动,再通过评审把正确的版本合进团队主线。
把代码想成一件包裹。
本地负责打包,远端负责
接收、检查和分发。
你一个人工作的地方。改文件、做检查点、试错,都不会立刻影响团队。
commit写入本地历史✓团队共享的地方。这里接收分支、跑 CI、做评审,最后合并进主线。
merge进入团队主线●在本地修改和提交,控制“什么时候交出去”。
记录每个版本,并在两个空间之间传递历史。
在远端评审和合并,决定“什么进入主线”。
刚才看到的是“大地图”。
现在只看你的电脑,
改动是如何一步步被记录的。
你正在编辑的文件
代码还没被 Git 记录。你可以随时修改、撤销或继续补充。
git diff查看尚未保存的变化你电脑上的完整历史
提交(commit)在这里生成。你可以断网工作,也能回看每一次决定。
git commit把暂存内容变成版本团队共享的版本
GitLab / GitHub / Codeup 上的共享基准,承载评审、集成与发布。
git push把本地提交交给团队记住:commit 只发生在本地;push 才会让远端看见。pull 也不是“覆盖本地”,而是把远端的新历史带回来并尝试合并。
围绕一条任务线工作。
每一步都能解释“为什么”。
开始新任务前,先站在团队最新的基线上。这样新分支不会一开始就落后,也更容易在早期发现冲突。
讲解重点 pull = fetch(拿回来)+ merge(合进来)。如果本地有未提交改动,先保存或暂存,再同步。
git status查看当前分支、哪些文件变了、哪些内容已暂存。
git log --oneline快速浏览提交历史,找到某次改动的来龙去脉。
git fetch只更新远端追踪信息,不改动当前工作区,适合先观察。
git restore撤销工作区的文件改动;使用前确认内容确实可以丢弃。
git stash把未完成的改动临时收起来,处理完紧急任务再恢复。
git revert创建一个“反向提交”抵消旧提交,适合已共享的历史。
Git 的技术能力很强,但好协作依赖的是一致的习惯。下面这组规则可以直接带进日常研发。
分支名能看出任务;不要把多个无关需求揉在一起。
一次提交对应一个逻辑动作,message 说明“做了什么”。
减少长期分叉,让冲突尽早暴露在作者手里。
已经 push 的提交,优先用 revert;谨慎使用 force push。
THE SHORT VERSION