看日记学git

《看日记学git》之随笔笔记

本原创文章属于《Linux大棚》博客,博客地址为http://roclinux.cn。文章作者为rocrocket。
为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅。

===

[正文开始]

本文章就是我复习前三十集后的一个总结,把忘了的知识点写在这重新提一下。你也看看,正好复习复习:)

1 git clone只会提取远程git仓库里已提交的信息,working tree和index file里的信息,git clone根本不会理会。如果你是经理,你让你的手下用git clone path/to/your/repo newrepo来将你的代码下载到他的本地就可以了,注意,他用此命令下载的是path/to/your/repo仓库中的当前分支的内容。当你的手下开发完他负责的那部分代码之后,通知你。你用git fetch path/to/his/newrepo hisbranch:yourbranch 来将你手下的工作成果抓取到你本地的yourbranch分支上。待审核合格之后,你就可以用git merge来合并他的工作了。

2 想查看两个分支的区别,就用git whatchanged -p branch1..branch2。注意,-p表示以易理解的字符方式表示两者区别。如果不加-p的话,git会输出一些内部格式的区别信息,你根本看不懂:)

3 git pull的用法至少有四种,一个是在git clone之后用git pull来同步;第二个用法是用git pull .来替代git merge命令;第三个用法是git pull /path/to/repo,将运程仓库的内容直接merge到当前分支中。第四种用法是在git pull /path/to/repo后面加上<src>:<dst>来指定源的分支和本地分支。

4 git里有四种对象:commit对象、tree对象、blob对象和tag对象

5 尽量不要用git-push,因为他类似于CVS的管理模式,而git的模式特点就是分布式,所以常用git pull代替git push。

6 git fetch <仓库路径> <分支信息>,用于从远程仓库获取代码。其中<分支信息>的格式是这样的“<src>:<dst>”,<src>表示源的分支,而<dst>表示本地分支。如果<dst>被省略,那么就默认为本地当前分支。

7 如果在当前分支有代码修改,但未commit,那么不允许git checkout到其他分支。

8 想从index file中删除一个登记文件,用git reset — filename

9 用git checkout -- filename来将此文件代码恢复到index中的状态。

over~

18条评论

  1. roc(就这么简称你了^_^)

    除了242424说的,用gitk来看,还有别的方法么?

    我想要的结果是比较“一个文件”的“指定版本”间的差别。

    1. @Lee.MaRS, 谢谢你的帮助~
      有点惭愧啊,只看到自己的笔记里写着“git diff HEAD — ./lib 比较lib文件夹”,完全没有感觉,可能是动手太少的缘故了。。。
      现在我常用这个了“git diff TAG –stat xxx”来比较都改动了那些文件。

      另外,有个小疑问,“–”应该算是一个空选项,加不加没有效果,是否还有其他作用呢?

  2. ———-push branch————
    git checkout -b branchname
    git push origin branchname:branchname
    ———-push branch————

    git有针对某一个文件查看修改的历史纪录的命令么?
    —对单个文件的命令没有,可以用gitk工具,
    或者用git log可以看整个git 的记录

    1. @242424,
      我试过gitk,可是gitk只是比价相邻两次之间的差别,而我想要的效果是可以自己指定那两次的文件进行比较。

  3. rocrocket,我在前一阵学过git。但是现在想知道,git有针对某一个文件查看修改的历史纪录的命令么?

    我真的是翻了好多以前看过的资料。可就是找不到,我记得是可以的。但是不知道如何用。请帮忙啊!谢谢咯~

  4. push到服务器上的一个新分支上,不就可以切换了?
    git push servername localbranch_name:newbranch_name

    不知道我的理解对不对啊,我也才学这个没有几天~~~~

    1. @qhhsea,
      呵呵 估计早已忘记了吧!我们项目目前改到git了,那天让我们头很很给骂了一顿,说我什么都不懂,全都白看了。博主讲的部分我们多人项目开发时用的很少。
      说说你的branch怎么push到服务器端的

  5. git push也是看用处的嘛,比如我晚上在家加班工作写完代码就是push到服务器上,白天上班再fetch下来接着在公司工作。

    1. 是啊,本地开发完,push到服务器上,然后服务器直接切换过来就可以了,这样不也很方便么?
      问题是,服务器如何切换到push的版本?这点有些迷惑…

    2. @沙漠风暴,
      push到一个新的分支上啊,切换时不就容易了?
      git push servername local_branch:new_branch

      不知道我的理解对不对啊,我也才学这个没有几天~~~

发表您的评论

请您放心,您的信息会被严格保密。必填项已标识 *