哎哟,孩子,别站着,坐下,先喝口热水。
奶奶知道,你一听见 Git 就头疼。什么工作区、暂存区、仓库、分支、合并、变基……听着像天书。其实啊,Git 没那么玄乎。你就把它当成奶奶的记账本:今天买了白菜,记一笔;明天买了豆腐,再记一笔。哪天想看看上个月花了多少钱,翻开本子就行。
Git 就是给你的文件记账的。你每改一次,它就帮你记一次。以后想回到哪一天,都能找回来。
一、先告诉 Git 你是谁
孩子,去人家家里做客,得先敲门,报上名。Git 也一样。
打开终端,先敲这两句:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
奶奶跟你说,这名字和邮箱,是你每次“记账”时签的名。别写成“张三李四王二麻子”,写你常用的就行。
装 Git 去哪儿装?去 git-scm.com,下载,一路下一步。Windows、Mac、Linux 都能用。奶奶不骗你。
二、新建一个账本,或者借别人的账本
如果你要从头开始,就在文件夹里敲:
git init
这就等于奶奶拿了个新本子,第一页写上“某某某的账本”。
如果你要把别人的项目拿过来,就敲:
git clone 仓库地址
比如:
git clone https://github.com/某某/某某项目.git
这就等于把人家整本账本复印了一份,放你桌上。
三、三个篮子,别搞混
奶奶给你摆三个篮子。
第一个叫工作区。就是你眼前这个文件夹,你正在改的文件都在这儿。
第二个叫暂存区。你改完了,觉得“这回改得还行”,就把它放进这个篮子。
第三个叫仓库。放进去的改动,正式记到账本上,就成了历史。
你每天干的活,就是在三个篮子之间倒腾。
四、每天就四句话,记住喽
孩子,别背一百个命令。奶奶教你四句,日常够用八成。
第一句:看看现在啥情况
git status
奶奶说,干活前先看状态。哪些文件改了,哪些没改,哪些还没放篮子,它都告诉你。
第二句:把改动放进暂存区
git add .
那个点,意思是“当前文件夹里所有改动,都放进来”。你要是只想放一个文件,就写:
git add 文件名
第三句:正式记一笔
git commit -m "说明这次改了啥"
比如:
git commit -m "修了登录按钮点不动的问题"
奶奶提醒你,引号里的话,是给以后的你看的。别写“改了一下”,写清楚点。不然过三个月,你自己都不知道改了啥。
第四句:传到远方去
git push
这是把账本传到 GitHub、GitLab、Gitee 那些地方。第一次传,可能要敲:
git push -u origin main
以后就一句 git push 就行。
五、奶奶的顺口溜
你把这四句连起来,就是奶奶的顺口溜:
先 status 看一看,
add 装盘别偷懒,
commit 拍照留档案,
push 上传给伙伴。
记住了没?没记住就抄手上。
六、想看看过去,就翻账本
git log --oneline
这一行,能把你以前记的账,一条一条列出来。每条前面有一串字母数字,那是编号,叫 commit hash。奶奶管它叫“账页号”。
想看得更漂亮点:
git log --oneline --graph --all
哎哟,那个图一出来,谁跟谁分的叉,谁跟谁合的伙,清清楚楚。
七、和远方的人一起干活
一个人干活简单,多个人干活,就得讲规矩。
先把远方的账本拉下来:
git pull
再把你的账本推上去:
git push
顺序就是:先拉,再推。别反过来。反过来容易打架。
要是推不上去,提示 rejected,别慌。多半是别人先推了新东西。你先 git pull,把别人的拿下来,合到一起,再 git push。
八、分支:平行世界
孩子,分支这东西,听着吓人,其实就是“另开一页写草稿”。
你想试个新功能,又怕把主账本弄乱,就开个分支:
git switch -c 新功能
这等于奶奶说:“你去旁边小本子上试,试好了再抄回大本子。”
试完了,切回主分支:
git switch main
然后把小本子合并进来:
git merge 新功能
要是合并完不想要那个分支了:
git branch -d 新功能
就这么简单。
九、冲突了?哎哟,别哭
冲突不可怕。冲突就是:你改了第三行,他也改了第三行,Git 不知道听谁的。
打开那个文件,你会看到:
<<<<<<< HEAD
你写的内容
=======
别人写的内容
>>>>>>> 别人的分支
奶奶教你:把 <<<<<<<、=======、>>>>>>> 这些乱七八糟的线全删掉,留下你真正想要的那段话。
改完以后:
git add .
git commit -m "解决了冲突"
完事。别怕,Git 不会吃了你。
十、后悔药,奶奶也给你备着
改乱了,想撤销没提交的修改
git restore 文件名
全撤销:
git restore .
放错篮子了,想从暂存区拿出来
git restore --staged 文件名
提交错了,想撤销提交但保留改动
git reset --soft HEAD~1
彻底不要了,回到上一次提交
git reset --hard HEAD~1
哎哟,这个可危险。你敲之前,先摸摸心口,问自己三遍:“我真不要了吗?” 真不要了再敲。
万一真搞丢了
git reflog
这个命令,是奶奶的救命箱。你只要提交过,它多半能帮你找回来。找到那一条,再 git reset --hard 账页号,就回来了。
十一、奶奶的最后一课
孩子,Git 不是靠背的。你就记住这个流程:
- 改文件
git status看看git add .装盘git commit -m "说明"记账git push上传- 别人改了,就
git pull拉下来 - 出事了,就
git status、git log、git reflog三件套
奶奶活这么大岁数,明白一个理儿:工具是拿来用的,不是拿来怕的。
你第一次敲错命令,没关系。第二次合并冲突,也没关系。第三次推不上去,更没关系。谁不是从 git status 开始学的?
行了,奶奶去做饭了。你先把 git status 敲一遍,敲完来厨房端菜。
记住喽:先拉后推,先看后改,危险命令慢点敲。
Git 不难,难的是你不敢敲第一下。