git远程操作常用命令

原创 2017年07月30日 11:43:38

git 是当前最流行的的版本控制系统,学会使用git来管理我们的项目是每一个程序员必会的技能。
本文主要讲解git中与远程操作操作相关的常用的命令,这些操作包括:

  • git clone
  • git remote
  • git fetch
  • git pull
  • git push

学会这几个操作,我们就可以在本地项目的仓库与远程项目操作之间游刃有余。

下面这幅图列出为了完成在本地仓库和远程仓库之间交互的流程,并将需要使用到的命令列入其中,以方便有个直观的理解。
本地仓库与远程仓库之间的交互

一、 git clone

顾名思义,该命令是用来远程仓库克隆/拷贝一份版本库到本地的。一般而言,这是与远程仓库交互的第一步,使用git clone来完成:

$ git clone <版本库的网址>

比如, 我们想克隆spark的版本库,则应当使用如下代码:

$ git clone https://github.com/apache/spark.git

该命令会在本地主机生成一个目录,并且与远程主机的版本库同名。当然,如果你需要自己指定不同的目录名,可以将目录名作为git clone命令的第二个参数。

$ git clone <版本库的网址> <本地目录名>

二、git remote

为了便于管理,Git要求我们必须为每个远程主机指定一个主机名,以方便我们记忆。
git remote 命令就用于管理主机名的。
不带选项的时候,即直接使用 git remote命令将会列出所有远程主机。

$ git remote
origin

我们也可以使用-v参数,这个参数将详细地显示信息,可以列出远程主机的网站

$ git remote -v
origin   https://github.com/apache/spark.git (fetch)
origin   https://github.com/apache/spark.git (push)

上面命令表示,当前只有一台远程主机,并且名字为origin,同时也显示了它的网址。
克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。

$ git clone -o spark https://github.com/apache/spark.git
$ git remote
spark

上面命令表示,克隆的时候,指定远程主机名为spark.

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

$ git remote show <主机名>

当然,我们还可以对远程主机做增 、删和重命名操作。具体操作如下:

git remote add命令用于添加远程主机。

$ git remote add <主机名> <网址>

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

$ git remote rm <主机名>

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

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

三、 git fetch

一旦远程主机的版本库有了更新,在git中被称为commit,需要将这些更新取回本地,这时就要用到git fetch命令。

$ git fetch <远程主机名>

上面命令将某个远程主机的更新,全部取回本地。
git fetch命令通常用来查看其他人的进程,因为取回的代码对我们当前本地的开发代码是没有影响。
默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。

$ git fetch <远程主机名> <分支名>

比如,取回origin主机的master分,可以使用如下命令:

$ git fetch origin master

所取回的更新,在本地主机上得用”远程主机名/分支名”的形式读取。
比如origin主机的master,就要用origin/master读取。
git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。

$ git branch -r 
  origin/HEAD -> origin/master
  origin/branch-0.5
  origin/branch-0.6
  origin/branch-0.7
  origin/branch-0.8
  origin/branch-0.9
  origin/branch-1.0
  origin/branch-1.0-jdbc
  origin/branch-1.1
  origin/branch-1.2
  origin/branch-1.3
  origin/branch-1.4
  origin/branch-1.5
  origin/branch-1.6
  origin/branch-2.0
  origin/branch-2.1
  origin/branch-2.2
  origin/master



$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/branch-0.5
  remotes/origin/branch-0.6
  remotes/origin/branch-0.7
  remotes/origin/branch-0.8
  remotes/origin/branch-0.9
  remotes/origin/branch-1.0
  remotes/origin/branch-1.0-jdbc
  remotes/origin/branch-1.1
  remotes/origin/branch-1.2
  remotes/origin/branch-1.3
  remotes/origin/branch-1.4
  remotes/origin/branch-1.5
  remotes/origin/branch-1.6
  remotes/origin/branch-2.0
  remotes/origin/branch-2.1
  remotes/origin/branch-2.2
  remotes/origin/master

上面命令表示,本地主机的当前分支是master,远程分支是有很多,都是带有remotes前缀的。

取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支。

$ git checkout -b mySpark origin/master

上面命令表示,在origin/master的基础上,创建一个新分支,并将其命名为mySpark。

此外,也可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支,也即将远程中新提交的内容合并到本地版本里。

$ git merge origin/master
# 或者
$ git rebase origin/master

上面命令表示在当前分支上,合并origin/master。

四、git pull

git pull命令的作用是,取回远程主机某个分支的更新,再将其与本地仓库中的指定分支合并。格式如下:

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

比如,如果我们想取回origin主机的branch-0.5分支,与本地的master分支合并,那么可以用如下命令来实现。
注意: <远程分支名>:<本地分支名>中冒号两边没有空格

$ git pull origin branch-0.5:master

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

$ git pull origin branch-0.5

上面命令表示,首先从远程仓库中取回origin/branch-0.5分支,
然后将其与当前分支合并。
实质上,这条命令相当于先做git fetch,再做git merge。

$ git fetch origin
$ git merge origin/branch-0.5

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

换句话说,本地的master分支自动”追踪”origin/master分支。
Git也允许手动建立追踪关系。

git branch --set-upstream master origin/branch-0.5

上面命令指定master分支与origin/branch-0.5分支建立追踪关系。
如果当前分支与远程分支存在追踪关系,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 pull命令很像,格式如下:

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

需要注意的是,分支推送顺序的写法是 <来源地>:<目的地>。
因此git pull是应当是 <远程分支>:<本地分支>,而git push应当是 <本地分支>:<远程分支>。
注意:<来源地>:<目的地>中的:两边不能有空格
如果省略远程分支名,则表示将本地分支推送到与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

$ git push origin master

上面命令表示,将本地的master分支推送到origin主机的master分支。如果远程分支不存在的话,则会被新建。
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

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

上面命令表示删除origin主机的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 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
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Jquery实现软键盘

屏幕键盘也称虚拟键盘,是一种非常实用的工具,推荐两个Jquery实现虚拟键盘,他们是什么呢?...

Java 归并排序(MergeSort)算法实现

Java 归并排序(MergeSort)算法实现public class MergeSort { public static void merge(int [] A,int p,int q,i...

git 远程操作常用命令

git remote 为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。 不带选项的时候,git remote命令列出所有远程主机。 使用-v选...

Git常用命令——远程操作

Git常用命令——远程操作 远程操作      先不引入github,利用git支持本地协议的特性,创建一个本地的远程服务器。 创建一个裸仓库(没有工作目录) Swit...

git远程操作常用命令

最近项目中运用到git进行版本管理,之前一直都是在用SVN,趁此机会对git进行学习学习。在项目中,使用gitstack搭建了git服务器,多人协作进行项目开发。1. 本地git操作- 初始化git项...

Git常用命令——分支操作

Git常用命令——分支操作 分支操作 git branch 列出,创建或者删除分支 git branch :创建一个分支git branch -d :删除指定分支gi...

分布式版本控制系统Git与项目托管平台Github相关概念、操作方法、开发流程与常用命令

简介 GitHub 是一个面向开源及私有软件项目的托管平台 因为它只支持 Git 作为唯一版本库格式进行托管,所以命名GitHub Git是一个开源的分布式版本控制系统 可以有效、高速的处理从...

Git常用命令和操作

1、设置忽略的文件: 我们在开发过程中肯定有些文件是不想放在版本库上的,比如项目配置文件等。 设置忽略的文件的步骤如下: 1)在项目目录中创建.gitignore文件 2)将要忽略的文件名写入.git...

Git本地操作以及常用命令

Git 常用命令 Git  是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。 Git常用操作命令: 1) 远程仓库相关命...

必须要会的Git基本使用及常用命令操作

之前一直用的svn,后来换了之后才发现git的强大功能,是svn不能比的。缺点就是可能上手比较难一点,刚开始自己研究了两天才摸索出来一些基本使用方法。 最近做项目需要建库等等,都用到了git,随着越...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:git远程操作常用命令
举报原因:
原因补充:

(最多只允许输入30个字)