9

这是一个系列文章,介绍了学习 Git 的好工具 - githug,如果你是第一次看到,请先阅读:
闯过这 54 关,点亮你的 Git 技能树
闯过这 54 关,点亮你的 Git 技能树(一)

今天我将带大家完成第 11 - 20 关。如对任何命令有疑问请看第一篇里的推荐教程。

第十一关


在 git 里,创建一个新文件时,要用 git add 来告诉 git,同样,删除一个文件时候,也要告诉 git。

第十二关

有时候执行 add 操作的时候不小心把多余的文件 add 进去了,这时我们需要把它从 staging area 移除出来,但不能删除文件。
通过 git help rm,搜索 cached,可以看到有这个参数,刚好能满足我们的需求。

--cached
    Use this option to unstage and remove paths only from the index. Working tree files, whether modified or
    not, will be left alone.

第十三关

这一关的场景也非常常见,回想一下以前我们用 CVS 或 SVN 的时候。
你写一个新需求写的正 High,突然你的主管找到你说有一个用户打电话来遇到一个问题,非常紧急。
我以前的做法是:把当前改过的文件「复制」一份先放在其它地方,把代码还原到没修改的状态,签出对应 production 环境的代码。
定位修复问题,提交代码,确认问题修复后再合并回开发分支,并把之前备份的代码复制进来进行合并。

stash 正是解决这个问题的,只需要 git stash,它就把当前未提交的改动「复制」到另一个地方暂存起来,待要恢复的时候执行 git stash pop 即可。

第十四关

这一关有两种解法,第一种是:

mv oldfile.txt newfile.txt
git rm oldfile.txt
git add newfile.txt

显然这样做用户体验很糟,Linux 肯定不会这么设计软件的。

第二种做法:
git mv oldfile.txt newfile.txt

第十五关

这一关相当于上一关的增强版,可以用通配符一起批量移动文件。

第十六关

有时候我们要看代码的提交历史,比如 Code Review 的时候。
不过 git 自带的 git log 命令比较弱,建议使用 GUI 客户端或 tig。

第十七关

第十八关

git push 命令默认是不会 push Tags 的,需要加参数。

第十九关

有时候提交之后发现漏掉了某些文件,怎么办?
往往很多人就会选择再单独提交一次,这样做其实是不合理的,之前的 commit 就不完整了,有可能上了 CI 就会挂掉。
好的做法是 amend:

命令执行后会调用默认的编辑器编辑 commit message,它会自动带出之前的 message,如果不需要修改,直接保存退出即可。

第二十关

默认提交的时候记录的是当前系统时间,但这一关要求覆盖提交日期。
我想不到有什么场景需要这么做,邪恶一点,有可能你把周五的提交,日期写成周末,这样表示周末在加班。
纯属YY,千万不要学,学了也不要告诉别人是我教你的。
git help commit,搜索 date

--date=<date>
    Override the author date used in the commit.

今天就到这里了,如果想第一时间得到更新,请关注 CodingStyle.cn


seabornlee
1.4k 声望124 粉丝

ThoughtWorker 培训师。