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 · 4181 次点击
    这是一个创建于 3248 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上一篇介绍了学习 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   ·   实用小工具   ·   4536 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:59 · PVG 17:59 · LAX 01:59 · JFK 04:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.