热门搜索 :
考研考公
您的当前位置:首页正文

git部分基本命令

来源:东饰资讯网
  • git branch bugWork master^^2^

    在master的上一级节点的第二个父节点的上一个节点建立一个branch分支

    git branch -f three C2

    将分支three强制移动到C2节点上

  • 相对引用

    • ^,^^...
    • ~ , ~<num>...
  • Git Cherry-pick

    git cherry-pick <提交号>
    #git cherry-pick C2 C4
    

  • 交互式的 rebase

    --interactive 简写为-i

    git rebase -i HEAD~4
    
  • rebase

    git rebase caption master 
    #将master合并到caption分支下。
    #即root->caption->bugfix
    

  • git commit --amend 创建'',保留当前的提交的id,而不是创建新的id
  • TAG

    git tag v1 C1 #如果不指定C1 那么Git 会使用HEAD指向的位置
    
  • Git Describe

    描述离你最近的锚点(也就是标签)

    git describe <ref>

    • 如果你没有指定的话,Git会以你目前所检出的位置(HEAD)。

      输出结果是<tag>_<numCommits>_g<hash>

      tag表示的是离ref最近的标签,numCommits是表示这个reftag相差有多少个提交记录,hash表示的是你所给定的ref所表示的提交记录哈希值的前几位。

    • ref提交记录上有某个标签时,则只输出标签名称

  • Git Fetch

    不会更新你的master分支,也不会修改你磁盘上的文件,只是下载提交记录(这样,你就可以对远程分支进行检查或者合并了)

    可以将git fetch的理解为单纯的下载操作

    git fetch origin foo Git 会到远程仓库的foo分支上,然后获取所有本地不存在的提交,放到本地的o/foo上。

    git fetch origin foo:bar Git 将 foo解析成一个origin仓库的位置,然后将那些提交记录下载到了本地的bar分支上。由于指定了目标分支,其他的分支都不会被更新。

  • Git Pull

    先抓取再合并到本地分支 ,可以理解为git fetch 组合 git merge

    git pull 就是 fetchmerge的简写,git pull 唯一关注的是提交最终合并到哪里(也就是为git fetch 所提供的destination参数)

    git pull origin foo 相当于git fetch origin foo; git merge o/foo

  • Git Push

    git push不带任何参数时的行为与Git 的一个名为push.default的配置有关。

    git pull --rebase 就是fetchrebase的简写

    git push <remote> <place> 可以为push指定参数

    git push origin master把这个命令翻译过来就是:切到本地仓库中的master分支,获取所有的提交,再到远程仓库origin中找到master分支,将远程仓库中没有的提交记录都添加上去,搞定之后告诉我。

    我们通过place参数来告诉Git提交记录来自于master,要推送到远程仓库中的master。它实际就是要同步两个仓库的位置。

    git push origin <source>:<destination> 推送到指定<destination>的目标位置。<source><destiantion>都支持相对引用,如果<destiantion> 不存在,则会origin创建新的branch

  • 远程追踪分支

    • pull 操作时,提交记录会被先下载到o/master上,之后再合并到本地master分支。隐含的合并目标由这个关联确定的。

    • push 操作时,我们把工作从master推到远程仓库中的master分支(同时会更新远程分支o/master)。这个推送的目的地也就是由这种关联确定的。

    • 有两种方式设置分支跟踪

      • git checkout -b foo o/master 创建一个名叫foo的分支,它跟踪远程分支o/master
      • git branch -u o/master foo,如果当前就在foo分支上,还可以省略foo

为什么不用merge呢?

rebase的优缺点

  • 优点:
    Rebase 使你的提交树变得很干净,所有的提交都在一条线上

  • 缺点:
    Rebase 修改了提交树的历史

一些开发人员喜欢保留提交历史,因此更偏爱merge。而其他人可能更喜欢干净的提交树,于是偏爱rebase。仁者见仁,智者见智。

古怪的<source>

Git 有两种关于<source>的用法是比较诡异的,即你可以在 git psuhgit fetch 时不指定任何source,方法就是仅保留冒号和destination部分,source部分留空。

  • git push origin :side
  • git fetch origin :bugFix

如果push<source>到远程仓库,它会删除远程仓库中的分支。

如果fetch<source>到本地,会在本地创建一个新的分支。

Top