zoukankan      html  css  js  c++  java
  • git基本命令--远程

    git clone:

    # clone到 <本地目录名>
    $ git clone <版本库的网址> <本地目录名>
    # 克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。
    $ git clone -o jQuery https://github.com/jquery/jquery.git
    $ git remote
    jQuery

      git clone只会clone master分支,如果想clone所有分支,git clone后git fetch,或者其它命令

    git remote:

      git remote add <shortname> <url> 添加一个新的远程 Git 仓库,<shortname> 也称作“主机名”

    $ git remote
    origin
    $ git remote add pb https://github.com/paulboone/ticgit
    $ git remote -v
    origin	https://github.com/schacon/ticgit (fetch)
    origin	https://github.com/schacon/ticgit (push)
    pb	https://github.com/paulboone/ticgit (fetch)
    pb	https://github.com/paulboone/ticgit (push)
    

      现在你可以在命令行中使用字符串 pb 来代替整个 URL。 例如,如果你想拉取 Paul 的仓库中有但你没有的信息,可以运行 git fetch pb

    $ git fetch pb
    remote: Counting objects: 43, done.
    remote: Compressing objects: 100% (36/36), done.
    remote: Total 43 (delta 10), reused 31 (delta 5)
    Unpacking objects: 100% (43/43), done.
    From https://github.com/paulboone/ticgit
     * [new branch]      master     -> pb/master
     * [new branch]      ticgit     -> pb/ticgit

      现在 Paul 的 master 分支可以在本地通过 pb/master 访问到 - 你可以将它合并到自己的某个分支中,或者如果你想要查看它的话,可以检出一个指向该点的本地分支。

      git remote show命令加上主机名,可以查看该主机的详细信息。

    $ git remote show origin 
    * remote origin
      Fetch URL: ssh://example.com/path/to
      Push  URL: ssh://example.com/path/to
      HEAD branch: master
      Remote branch:
        master tracked
      Local branch configured for 'git pull':
        master merges with remote master
      Local ref configured for 'git push':
        master pushes to master (fast-forwardable)

      git remote rm命令用于删除远程主机。

      git remote rename命令用于远程主机的改名。

    $ git remote rm <主机名>
    $ git remote rename <原主机名> <新主机名>

    git fetch:

      一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。

      默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。

    $ git fetch <远程主机名>
    $ git fetch <远程主机名> <分支名>
    # for example
    $ git fetch origin master

      所取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。比如origin主机的master,就要用origin/master读取。

    git branch:

      git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。

    $ git branch -r
    origin/master
    
    $ git branch -a
    * master
      remotes/origin/master

      上面命令表示,本地主机的当前分支是master,远程分支是origin/master。

    git pull: 

      git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。

    $ git pull <远程主机名> <远程分支名>:<本地分支名>

      比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。

    $ git pull origin next:master

      如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

    $ git pull origin next

      上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。

    $ git fetch origin
    $ git merge origin/next

      在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动"追踪"origin/master分支。

      Git也允许手动建立追踪关系。

    $ git branch --set-upstream master origin/next

      上面命令指定master分支追踪origin/next分支。

      如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

    $ git pull origin

      上面命令表示,本地的当前分支自动与对应的origin主机"追踪分支"(remote-tracking branch)进行合并。

      如果当前分支只有一个追踪分支,连远程主机名都可以省略。

    $ git pull

      上面命令表示,当前分支自动与唯一一个追踪分支进行合并。

      如果合并需要采用rebase模式,可以使用--rebase选项。

    $ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

      如果远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支。

      但是,你可以改变这个行为,加上参数 -p 就会在本地删除远程已经删除的分支。

    $ git pull -p
    # 等同于下面的命令
    $ git fetch --prune origin 
    $ git fetch -p

     git push:

      git push命令用于将本地分支的更新,推送到远程主机。

    $ git push <远程主机名> <本地分支名>:<远程分支名>

      如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。simple, matching, need to verify. 用于新建远程分支?

    $ git push origin master

      上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。simple, matching, need to verify.

      如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

    $ git push origin :master
    # 等同于
    $ git push origin --delete master

      如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

    $ git push origin
    表示,将当前分支推送到origin主机的对应分支

      如果当前分支只有一个追踪分支(意思是远程主机名?),那么主机名都可以省略。

    $ git push

      如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。

    $ git push -u origin master
    上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

      不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。(只有不带参数时,git push才会区分simple 和matching的情况?)

    $ git config --global push.default matching
    # 或者
    $ git config --global push.default simple

      还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用--all选项。

    $ git push --all origin
    上面命令表示,将所有本地分支都推送到origin主机。

      如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用--force选项。

    $ git push --force origin
    上面命令使用--force选项,结果导致远程主机上更新的版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用--force选项。

      最后,git push不会推送标签(tag),除非使用--tags选项。

    $ git push origin --tags

    参考:

      http://www.ruanyifeng.com/blog/2014/06/git_remote.html

  • 相关阅读:
    为什么 PCB 生产时推荐出 Gerber 给工厂?
    Fedora Redhat Centos 有什么区别和关系?
    【KiCad】 如何给元件给元件的管脚加上划线?
    MCU ADC 进入 PD 模式后出现错误的值?
    FastAdmin 生产环境升级注意
    EMC EMI 自行评估记录
    如何让你的 KiCad 在缩放时不眩晕?
    KiCad 5.1.0 正式版终于发布
    一次单片机 SFR 页引发的“事故”
    java基础之集合
  • 原文地址:https://www.cnblogs.com/drizzlewithwind/p/4878150.html
Copyright © 2011-2022 走看看