闯过这 54 关,点亮你的 Git 技能树 (一) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
seabornlee
V2EX    git

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

  •  
  •   seabornlee 2016-01-01 09:18:32 +08:00 4728 次点击
    这是一个创建于 3622 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上一篇介绍了学习 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 ,这样敲起来就非常方便。

    第十关

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

    • untracked - 新增的文件, Git 根本不知道它的存在
    • not staged - 被索引过又被修改了的文件
    • staged - 通过 git add 后被即将被提交的文件


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

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

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

    git config --global core.editor "vim"
    seabornlee
        10
    seabornlee  
    OP
       2016-01-02 07:41:33 +08:00   1
    @aprikyblue `git help repack`,搜索 redundant 。只能帮你到这里了 : )
    maxam0128     11
    maxam0128  
       2016-01-04 22:52:30 +08:00
    我也卡到 44 了,真是尴尬
    maxam0128
        12
    maxam0128  
       2016-01-04 23:09:12 +08:00
    @maxam0128 又回头看了下教程就过了,先 git rebase -i HEAD~~ git --amend git rebase --continue
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3212 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 11:30 PVG 19:30 LAX 03:30 JFK 06:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86