Git 入门:从第一次提交到和别人一起改代码
写代码最怕的不是写错,而是改乱了回不去。改到一半想回到昨天能跑的版本,靠复制文件夹、加一串日期后缀,撑不了几天就会乱。Git 就是解决这个问题的工具:它不替你写代码,只帮你把每一次改动记下来,随时能回去,也能和别人一起改同一份代码而不互相踩脚。
一、Git 到底在管什么
很多人第一次用 Git,会把它当成网盘:以为是把代码传到网上存一份。其实 Git 管的是改动的历史。你的项目里每一次提交,都是当时全部文件的一张快照,外加一句你写的说明。快照连成一条线,就是这个项目的成长过程。想回到某一步,就把指针拨回那张快照;想知道某行代码是谁什么时候改的,沿着历史翻就能找到。
理解了这一点,后面的命令就都顺了:提交不是上传,拉取不是下载,分支也不是复制一份项目。
二、装好之后先做两件事
安装完成后,先告诉 Git 你是谁。这两行配置只写进你自己的电脑,不会公开,也不会用来登录任何网站,它的作用只有一个:以后每一次提交,署名都是你。
第一行设名字,第二行设邮箱,对应命令是 git config --global user.name 和 git config --global user.email。名字可以用网名,邮箱用你常用的那个。配完可以用一条查看命令确认,看到刚才填的内容回显出来,就说明配好了。这一步只做一次,以后换电脑再配一次就行。
三、第一次提交,四步就够
找一个练习文件夹,先执行 git init 初始化。初始化的意思是在这个文件夹里建一个专门记历史的隐藏目录,从这一刻起,Git 开始为这个文件夹记账。没有初始化的文件夹,Git 是不管的。
然后是四步循环,以后每天写代码基本就是重复这四步。第一步用 git status 看状态:哪些文件改了、哪些还没被记下来,状态命令会用不同颜色和分组告诉你,一眼就能看清。第二步用 git add 把想记下来的改动加进暂存区,可以一次加一个文件,也可以一次加全部,刚开始建议一个一个加,养成检查的习惯。第三步用 git commit -m 提交:给这次改动写一句说明,说明要写清楚改了什么、为什么改,比如修复了登录按钮在窄屏下错位的问题,而不是只写改了一下。第四步用 git log 看记录:提交之后翻一下历史,确认刚才那次提交已经在里面,说明文字也对得上。
这四步跑通一次,Git 就算入门了。剩下的功能,都是在这四步上加的花样。
四、分支:主线不动,新想法另开一条线
写到一半突然想试一个新做法,又怕把现在能跑的版本弄坏,这时候就该用 git branch 开分支、用 git checkout 切换过去。分支不是复制项目,而是在当前快照上另起一条线。主线继续保持能跑,新想法在分支上随便折腾,做坏了删掉分支就行,主线毫发无损。做成了,再用 git merge 把分支合并回主线。
合并时最常见的结果是顺利合上,因为两条线改的是不同地方。偶尔会遇到冲突:两个人改了同一行,Git 不知道该听谁的,就会停下来等你决定。这不是故障,是 Git 在保护你的代码。下一节说怎么处理。
五、和别人协作:先拉后推,冲突不可怕
一个人用 Git,只需要在本地记历史。两个人以上,就要一个大家都能访问的远程仓库。第一次拿到别人的项目用 git clone 克隆,克隆会把完整历史都拿回来。之后每天开工先用 git pull 拉取,把别人昨天推上去的改动同步到本地;自己的改动提交好之后再用 git push 推送上去。
冲突就发生在这个环节。打开冲突文件,会看到几行特殊的标记,把两个版本隔开:上面是你本地的改动,下面是对方推上来的改动。你要做的不是二选一,而是读懂两边各想干什么,手工拼成一个两个人都想要的结果,删掉标记行,再提交一次。处理完冲突的那次提交,说明里写清楚合并了哪两边的改动,方便以后回查。
还有一条协作礼貌:推送之前先拉取,拉取之后先跑一遍,确认能跑再推。把跑不通的代码推上去,坑的是下一个拉取的人。
六、新手最容易踩的四个坑
第一个坑是把不该进仓库的东西提交了,比如账号密码、密钥文件、大体积的安装包和编译产物。办法是在第一次提交之前就建好忽略文件,把这些类型写进去,Git 就会自动跳过它们。已经提交过的密码要当作已经泄露来处理,改密码比删记录更重要。
第二个坑是提交说明写得太随意。过一个月回头看,改了一下这种说明等于没写。好的说明有一个动词加一个对象,再加一句原因,读起来就像一句话:修复了什么、新增了什么、为什么这样改。
第三个坑是长期在主分支上直接改。主分支应该是随时能跑的状态,新功能、新实验一律开分支,合并之前自己先测一遍。
第四个坑是提交太少,一天只提交一次。提交的粒度应该是做完一件小事就提交一次:修好一个问题、加好一个功能、改好一处样式,各算一次。这样回退的时候才能精确回到某一步,而不是一下退回一天前。
七、今天就能练的一组动作
新建一个练习文件夹,里面放一个写着一句话的文本文件。初始化,看状态,加进暂存区,提交,翻记录确认。然后改一句话,再走一遍看状态、暂存、提交、看记录。接着开一个分支,在分支里再改一句话,合并回主线。这一圈跑下来不过十几分钟,但 Git 最核心的动作你就都摸过一遍了。
Git 的命令看着多,真正每天用的就是状态、暂存、提交、看记录、分支、拉取、推送这几个。先把这几个用顺,再去学变基、贮藏、打标签那些进阶用法,顺序反过来会越学越乱。工具是为人服务的,能帮你放心大胆地改代码、随时回得去,它就值了。
- 点赞
- 收藏
- 关注作者
评论(0)