闯过这 54 关,点亮你的 Git 技能树 (一)

2016-01-01 09:18:32 +08:00
 seabornlee

上一篇介绍了学习 Git 的好工具,如果你没有看过,请先阅读:
闯过这 54 关,点亮你的 Git 技能树

今天我将带大家完成前十关。第一关在前文中已经完成,我们从第二关开始吧。
如对任何命令有疑问请看第一篇里的推荐教程。

第二关

根据提示,我们要配置「用户名」和「邮箱」,为什么呢?
你的代码提交后,特别是提交到开源社区,被别人看到,人家觉得这个代码写的真牛,想给你一个工作机会,怎么联系你?

通常,我们在 IDE 里创建一个新文件, IDE 都会自动加上日期,作者,邮箱等信息。其实我认为这都是过时的传统了,现在我们喜欢尽量保持源代码干净。
像创建日志,作者,邮箱这些信息都应该交给版本控制系统来记录。
当然如果你代码写的很烂的话就要小心了,别人 git blame 一下就可以问候你的家人了。

具体怎么过关过程如下:

第三关

第四关

第五关

第六关

第七关

这一关对于不了解 Vim 的同学可能有一点麻烦。这里也是一个很贴近实际的场景,用 Vim 编辑文件的时候,会产生一个 .swp 文件,这个文件的作用是:在你不小心退出了 Vim 或 Vim 自己崩溃后,再次编辑这个文件,就会提示你存在一个 .swp 文件,询问是否恢复。
它属于临时文件,显然不应该被提交到 VCS 里去。所以 Git 有一个机制让我们可以忽略某些文件。

第八关

这一关是上一关的延伸,忽略某类文件,但排除其中特定的一个。

根据提示来看一下帮助 git gitignore --help,输入 /negate 进行搜索,一下就定位到下面这一段:

根据帮助我们知道了,可以用 ! 来对模式取反。
所以我们编辑 .gitignore,追加如下两行:

*.a
!lib.a

成功过关!

第九关

git status 是一个非常常用的命令,插一句题外话:我给它配一个别名 gst ,这样敲起来就非常方便。

第十关

这两关都是考察基本概念,一个文件的几种状态:


这里一看状态就知道了,如果现在执行 git commit,只有最上面的两个文件会被 commit 。

今天就先到这里,如有任何疑问欢迎到 「这里」与我讨论!

4219 次点击
所在节点    git
12 条回复
MarsWang
2016-01-01 09:19:50 +08:00
有点意思
fgwww
2016-01-01 12:44:47 +08:00
不知道变基的内容多不多
niseceric
2016-01-01 19:08:59 +08:00
感谢推荐,已撸 55 关, 对于熟悉 git 还是很有用的, 大部分常用的都囊括了。。。 黑科技 reflog 233
vcfghtyjc
2016-01-01 19:52:55 +08:00
卡到 44 关。。。
niseceric
2016-01-01 21:26:41 +08:00
@vcfghtyjc rename commit ? git rebase -i --root, 把某个 pick 改成 rework, 建议学一下 lz 原帖中的推荐教程~ 就是猴子也会的 git 教程啦
seabornlee
2016-01-01 21:31:30 +08:00
@vcfghtyjc `git rebase HEAD~2 -i`,把 message 有错的那个 commit 从 pick 改为 r ,保存退出就会再让你修改 message 了。
aprikyblue
2016-01-01 22:07:49 +08:00
学到一些新姿势。。。 41 卡住了
niseceric
2016-01-01 23:58:50 +08:00
@aprikyblue 你要搞清楚 rebase 的方向 分支 feature rebase onto master 需要在 feature 分支操作
vcfghtyjc
2016-01-02 02:39:37 +08:00
@niseceric @seabornlee 已解决,其实是因为默认用的编辑器是 vi 修改后不能执行代码,讲编辑器换为 vim 后可以执行

git config --global core.editor "vim"
seabornlee
2016-01-02 07:41:33 +08:00
@aprikyblue `git help repack`,搜索 redundant 。只能帮你到这里了 : )
maxam0128
2016-01-04 22:52:30 +08:00
我也卡到 44 了,真是尴尬
maxam0128
2016-01-04 23:09:12 +08:00
@maxam0128 又回头看了下教程就过了,先 git rebase -i HEAD~~ git --amend git rebase --continue

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/247615

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX