Git 基础:commit、push、pull 一次讲清
每个 Git 新手都经历过这个阶段:教程看了三篇,commit、push、pull 还是分不清,跟着敲命令能跑通,但完全不知道自己在干什么。
这篇不用术语轰炸,用问答形式把这三个核心概念一次讲清。
问:Git 和 GitHub 到底是什么关系?
Git 是一个工具,管的是"你电脑上代码的版本"。GitHub 是一个网站,管的是"把代码放在网上,方便协作"。
打个比方:Git 是你家里的保险柜,代码的每个版本都锁在里面;GitHub 是银行的保险库,你把保险柜里的东西复印一份存过去,别人也能存取。push 和 pull,就是你在家和银行之间搬运东西的动作。
问:commit 到底是在干什么?
commit 就是"存档"。你在本地改了一通代码,觉得"这一版可以留个记录",就 commit 一下,Git 会给当前所有文件的状态拍个快照,附上一句说明(比如"修复登录 bug")。
关键点:commit 只发生在你自己的电脑上,跟网络没关系,断网也能 commit。它就是个本地存档动作。
新手常犯的错是 commit 写得太随意。“update”、“fix”、“123"这种说明,过两周你自己都看不懂。养成习惯:一句话说清这次改了什么。
问:那 push 呢?
push 是"上传”。你在本地 commit 了好几个版本,别人看不见——因为它们只存在你的电脑上。push 就是把这些本地的 commit 推到 GitHub 上,让它们变成"公开的"或者"团队可见的"。
记住这个顺序:先 commit(本地存档),再 push(上传)。直接 push 不 commit 是推不上去的,因为没东西可推。
问:pull 又是什么?
pull 是"下载更新"。两种场景:
- 你在公司电脑 push 了代码,回家用自己的电脑继续写——先 pull,把最新的代码拉下来,再开工。
- 和别人协作,队友 push 了新代码——你 pull 一下,本地就同步了。
所以日常流程是:开工前 pull 一下(保证最新),干完活 commit(本地存档),最后 push(上传)。
问:新手最容易踩的坑有哪些?
坑一:忘了 pull 直接 push。 远程已经有新代码了,你本地还是旧的,这时候 push 会被拒绝。解决办法:先 pull,解决冲突(如果有),再 push。
坑二:把密码、密钥 commit 上去。 commit 进 Git 的历史是很难彻底删干净的,push 到 GitHub 上就更麻烦。凡是密钥、token、私钥,一律用 .gitignore 排除。这条没有商量余地。
坑三:在主分支上直接改。 个人小项目无所谓,但凡是协作项目,先建个分支改,改完提 PR 合并。之前 《如何给开源项目提第一个 PR》 里走过完整流程,分支操作那篇里有,这里就不重复了。
问:一定要背下所有命令吗?
不用。日常 90% 的场景就是这五个:clone(第一次把项目拿下来)、pull(更新)、add + commit(存档)、push(上传)。先把这五个用熟,遇到新场景再查。
之前还写过 《GitHub Desktop vs 命令行:新手选哪个》,如果你对命令行发怵,可以先从图形界面理解这套流程,再回头学命令,会顺很多。
一句话总结
commit 是本地存档,push 是上传,pull 是下载更新。开工 pull,收工 commit + push。先把这套流程跑顺,Git 就算入门了。