git remote

为了便于管理,Git要求每个远程仓库都必须指定一个仓库名。为了便于管理,Git要求每个远程仓库都必须指定一个仓库名。

  • git remote【查看创库名】
git remote

在我们clone了刚才的项目之后,默认会看到一个origin的远程仓库

  • git remote -v/--version 【查看仓信息】

显示出详细的url地址名和对应的别名.

如:

origin  git@github.com:zhaoJoeyuan/TestTwo.git (fetch)
origin git@github.com:zhaoJoeyuan/TestTwo.git (push)
  • git remote add 【添加远程仓库】

命令:

git remote add name url

如:

git remote add joey git@github.com:zhaoJoeyuan/Test.git

添加后,用git remote -v 查看

joey    git@github.com:zhaoJoeyuan/Test.git (fetch)
joey git@github.com:zhaoJoeyuan/Test.git (push)
  • git remote remove 【删除添加的远程库】
命令:git remote remove name
  • gi remote show 【查看指定仓库的详细信息】

命令:

git remote show 仓库名

git push

git push命令用于将本地分支的更新,推送到远程仓库。它的格式与git pull命令相仿。

git分支推送/拉取顺序的写法是<来源地>:<目的地>所以push和pull肯定是相反的,push来源地是本机,pull的来源地是远程。

1. 完整写法

命令:

git push <远程仓库名> <本地分支名>:<远程分支名>

注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。

如:

git push origin master2master2

将本地的master分支推送到远程库的master分支,如果远程分支不存在将会被创建。

2. 省略本地分支名

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。注意第一个分支(origin/master)是不可以被删除的,

命令:删除远程分支

git push origin :远程分支名   # origin后面有一个空格

或 git push origin --delete :远程分支名

或 git push origin :远程分支名 --delete

3. 省略远程分支名

如果省略远程分支名,则表示将本地分支推送到与之存在Tracking(追踪关系)的远程分支,通常两分支同名。如果远程分支不存在,则会自动创建分支。

如:

git push origin master

上面命令表示,将本地的master分支推送到origin仓库的master分支。如果后者不存在,则会被新建。

以上当前分支与远程分支没存在追踪关系,就是谁也不是谁的upstream/downstream。

4. 全部省略

如果当前分支只有一个追踪分支,那么仓库名都可以省略。

git push

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

git push -u origin master

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

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

$ 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

git fetch 从远程拉取更新到本地

是从远程获取最新版本到本地仓库,而不是工作目录,  并且不会自动merge

理解fetch

理解fetch 的关键,是理解FETCH_HEAD。

FETCH_HEAD指的是: 某个branch在服务器上的最新状态'.

每一个执行过fetch操作的项目'都会存在一个FETCH_HEAD列表, 这个列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行对应于远程服务器的一个分支.当前分支指向的FETCH_HEAD, 就是这个文件第一行对应的那个分支.

一般来说, 存在两种情况:

  • 如果没有显式的指定远程分支, 则远程分支的master将作为默认的FETCH_HEAD.
  • 如果指定了远程分支, 就将这个远程分支作为FETCH_HEAD.

git fetch <远程仓库名> ,将某个远程仓库的更新,全部取回本地仓库

命令:

git fetch <远程仓库名>

将远程仓库的所有分支都拉取到本地

fetch 后不带分支名,则是所有仓库里的分支

注意:所取得的远程分支在本地仓库上要用"远程仓库名/分支名"的形式读取。比如origin仓库的master,就要用origin/master读取。

取回特定分支的更新,可以指定分支名

命令:

git fetch <远程仓库名> <分支名>

git fetch <远程仓库名>   <远程分支名>:<本地分支名>

常见的git fetch 使用方式包含四种:

  • 1.git fetch

命令:

git fetch

这一步其实是执行了2个关键操作:

  1. 创建并更新所有远程分支的本地分支;
  2. 设定当前分支的FETCH_HEAD为远程服务器的master分支(上面说的第一种情况) 需要注意的是,和push不同,fetch会自动获取远程分支“新加入”的分支
  • 2.git fetch origin

命令:

git fetch origin

功能同上,只不过手动指定了remote

  • 3.git fetch origin <远程分支名>

命令:

git fetch origin <远程分支名>

这个命令可以用来测试远程仓库的远程分支branch1是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出一个异常.

  1. git fetch origin <远程分支名>:<本地分支名> 命令:
git fetch origin <本地分支名>:<远程分支名>

使用远程<远程分支名>分支在本地创建<本地分支名>(但不会切换到该分支), 如果本地不存在<本地分支名>分支, 则会自动创建一个新的<本地分支名>分支, 如果本地存在<远程分支名>分支, 并且是fast forward, 则自动合并两个分支, 否则, 会阻止以上操作。

<本地分支名>和<远程分支名>同名,则等价于git fetch origin :<远程分支名>

git pull

是从远程获取最新版本到本地,并低程度的自动merge;但大部分还需要程序员自己判断合并

完整命令

git pull <远程仓库名> <远程分支名>:<本地分支名>

注意这个远程分支名是不带origin/的前缀的(别名的前缀),有冲突的时候修改冲突即可,修改完毕add、commit

非完整,省略当前<本地分支名>

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

git pull origin <远程分支名>

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

git pull & git fetch

git pull origin <远程分支名>

等价于

git fetch origin
git fetch origin/<远程分支名>

省略2个分支名

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

git pull origin

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

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

 git pull

取得远程分支以后有两种处理方式:

  • 1.基于远程分支直接在本地创建一个新分支

命令:

 git checkout -b <本地分支名> origin/<远程分支名>

上面是完成的写法,其他写法如下:

git checkout -b <本地分支名>
#基于<本地master分支>而创建 git checkout -b <本地分支名> orgin
# 基于<远程master分支>而创建 git checkout -b <本地分支名> <本地分支名2>
# 基于<本地分支2>而创建

基于远程创建一定要带orgin(远程仓库名)/ 的前缀,否则都是基于本地分支创建,如果没有跟分支名,则是以默认的master而创建(可以是远程master,也可以是本地master,看是否有origin前缀)

  • 2.git merge命令或者git rebase 命令,在本地分支上合并远程分支。

命令:

 git merge origin/master

 git rebase origin/master

在本地分支上(当前分支)合并远程分支

Git手动建立追踪关系。

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

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远程操作相关命令(remote 、push、fetch 、pull)的更多相关文章

  1. Git远程操作详解(clone、remote、fetch、pull、push)

    https://blog.csdn.net/u013374164/article/details/79091677 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多 ...

  2. IDEA环境下GIT操作浅析之二-idea下分支操作相关命令

    上次写到<idea下仓库初始化与文件提交涉及到的基本命令>,今天我们继续写IDEA环境下GIT操作之二--idea下分支操作相关命令以及分支创建与合并. 1.idea 下分支操作相关命令 ...

  3. Git远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  4. Git远程操作

    Git远程操作 // */ // ]]>   Git远程操作 Table of Contents 1 Git远程命令概览 2 Git远程仓库与本地仓库的关系图 3 git clone 4 git ...

  5. [转]Git远程操作详解

    原文:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多 ...

  6. Git 远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  7. 【Git】Git远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  8. 转自:阮一峰 Git远程操作详解

      对于git的一些指令还是有些生疏,而且在课堂上讲的只是简单介绍了一些功能,并没有具体深入,看到这篇文章之后,觉得比较详细,所以转了过来. Git是目前最流行的版本管理系统,学会Git几乎成了开发者 ...

  9. Git配置信息相关命令

    查看git所有配置项 $ git config -l or $ git config --list 全局配置用户名邮箱 $ git config --global user.name "yo ...

随机推荐

  1. 基于模糊聚类和最小割的层次化三维网格分割算法(Hierarchical Mesh Decomposition)

    网格分割算法是三维几何处理算法中的重要算法,具有许多实际应用.[Katz et al. 2003]提出了一种新型的层次化网格分割算法,该算法能够将几何模型沿着凹形区域分割成不同的几何部分,并且可以避免 ...

  2. [转]Android ImageView的scaleType属性与adjustViewBounds属性

    Android ImageView的scaleType属性与adjustViewBounds属性   ImageView的scaleType的属性有好几种,分别是matrix(默认).center.c ...

  3. Delphi - cxGrid字段类型设定为ComboBox 并实现动态加载Item

    cxGrid设定字段类型为ComboBox 在cxGrid中选中需要设定的字段: 单击F11调出属性控制面板,在Properties下拉选项中选中ComboBox,完成字段类型的设定. cxGrid ...

  4. Redis设计原理

    1.简介 Redis中的每个Key-Value在内存中都会被划分成DictEntry.RedisObject以及具体对象,其中DictEntry又分别包含指向Key和Value的指针(以RedisOb ...

  5. 持续集成高级篇之Jenkins资源调度

    系列目录 之前的示例我们主要关注点在于功能的实现,都是在一个节点的完成了.有了多个节点后,必须涉及到资源的调度问题.本节我们讲解在创建任务时与资源调度的有关选项以及一些平时没有注意到的但在生产环境需要 ...

  6. Mongodb操作1-linux安装数据库

    1.下载mongodb 百度云盘连接 :链接:https://pan.baidu.com/s/1b-hTS0XHQKpatecFoumLxw  提取码:z9ax 并送上可视化工具:链接:https:/ ...

  7. 棋盘问题 POJ - 1321 [kuangbin带你飞]专题一 简单搜索

    在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. ...

  8. 纯JS实现在一个字符串b中查找另一个字符串a出现的所有位置,并且不使用字符串的方法(递归)

    问题:判断字符串A在中所有出现字符串B中(长度大于1)的索引.不得使用字符串方法indexof,substring等 有小伙伴在面试遇到了这个问题,乍一看如果使用使用字符串方法indexof,subs ...

  9. Git使用(一)安装配置过程-Win7

    公司项目需要使用Git作为项目的代码库管理工具.正好借此机会写个安装过程 1.首先下载Git下载地址:https://git-scm.com/download/win 当前下载版本:Git-2.13. ...

  10. Vert.x Web之Router

    Vert.x Web 是一系列用于基于 Vert.x 构建 Web 应用的构建模块. Vert.x Web 的大多数特性被实现为了处理器(Handler),因此您随时可以实现您自己的处理器.我们预计随 ...