HANDBOOK
Git远程操作详解
Git远程操作详解 作者: 阮一峰 日期: 2014年6月12日 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能。 Git有很多优势,其中之一就是远程操作非常简便。本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作。 git clone git remote git fetch git pull git push 本文针对初级用户,从最简单的讲起,但是需要读者对Git的基本用法有所了解。同时,本文覆盖了上面5个命令的几乎所有的常用用法,所以对于熟练用户也有参考价值。 一、git clone 远程操作的第一步,通常是从远程主机克隆一个版本库,这时就要用到git clone命令。
1 2 3 |
$ git clone <span class="token operator"><</span>版本库的网址<span class="token operator">></span> |
比如,克隆jQuery的版本库。
1 2 3 |
$ git clone https<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>github<span class="token punctuation">.</span>com<span class="token operator">/</span>jquery<span class="token operator">/</span>jquery<span class="token punctuation">.</span>git |
该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。
1 2 3 |
$ git clone <span class="token operator"><</span>版本库的网址<span class="token operator">></span> <span class="token operator"><</span>本地目录名<span class="token operator">></span> |
git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。
1 2 3 4 5 6 7 8 9 |
$ git clone http<span class="token punctuation">[</span>s<span class="token punctuation">]</span><span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>example<span class="token punctuation">.</span>com<span class="token operator">/</span>path<span class="token operator">/</span>to<span class="token regex">/repo.git/</span> $ git clone ssh<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>example<span class="token punctuation">.</span>com<span class="token operator">/</span>path<span class="token operator">/</span>to<span class="token regex">/repo.git/</span> $ git clone git<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>example<span class="token punctuation">.</span>com<span class="token operator">/</span>path<span class="token operator">/</span>to<span class="token regex">/repo.git/</span> $ git clone <span class="token operator">/</span>opt<span class="token operator">/</span>git<span class="token operator">/</span>project<span class="token punctuation">.</span>git $ git clone file<span class="token punctuation">:</span><span class="token comment" spellcheck="true">///opt/git/project.git </span>$ git clone ftp<span class="token punctuation">[</span>s<span class="token punctuation">]</span><span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>example<span class="token punctuation">.</span>com<span class="token operator">/</span>path<span class="token operator">/</span>to<span class="token regex">/repo.git/</span> $ git clone rsync<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>example<span class="token punctuation">.</span>com<span class="token operator">/</span>path<span class="token operator">/</span>to<span class="token regex">/repo.git/</span> |
SSH协议还有另一种写法。
1 2 3 |
$ git clone <span class="token punctuation">[</span>user@<span class="token punctuation">]</span>example<span class="token punctuation">.</span>com<span class="token punctuation">:</span>path<span class="token operator">/</span>to<span class="token regex">/repo.git/</span> |
通常来说,Git协议下载速度最快,SSH协议用于需要用户认证的场合。各种协议优劣的详细讨论请参考官方文档。 二、git remote 为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。 不带选项的时候,git remote命令列出所有远程主机。
1 2 3 4 |
$ git remote origin |
使用-v选项,可以参看远程主机的网址。
1 2 3 4 5 |
$ git remote <span class="token operator">-</span>v origin <a class="token email-link" href="mailto:git@github">git@github</a><span class="token punctuation">.</span>com<span class="token punctuation">:</span>jquery<span class="token operator">/</span>jquery<span class="token punctuation">.</span>git <span class="token punctuation">(</span>fetch<span class="token punctuation">)</span> origin <a class="token email-link" href="mailto:git@github">git@github</a><span class="token punctuation">.</span>com<span class="token punctuation">:</span>jquery<span class="token operator">/</span>jquery<span class="token punctuation">.</span>git <span class="token punctuation">(</span>push<span class="token punctuation">)</span> |
上面命令表示,当前只有一台远程主机,叫做origin,以及它的网址。 克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。
1 2 3 4 5 |
$ git clone <span class="token operator">-</span>o jQuery https<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>github<span class="token punctuation">.</span>com<span class="token operator">/</span>jquery<span class="token operator">/</span>jquery<span class="token punctuation">.</span>git $ git remote jQuery |
上面命令表示,克隆的时候,指定远程主机叫做jQuery。 git remote Read more…