这是git详解的第二篇,最近这个加班有点虚,因此文章也写的比较懒了,一到加班不得已,保温杯里泡枸杞啊,不扯了,今天咱们来看看git的第二篇git
这篇内容主要是git的一些远程命令github
远程仓库工具
git clonefetch
远程分支网站
git fetch云计算
关于远程咱们要先理解一个概念,远程仓库spa
远程仓库并不复杂, 在现在的云计算盛行的世界很容易把远程仓库想象成一个富有魔力的东西, 但实际上它们只是你的仓库在另个一台计算机上的拷贝。你能够经过因特网与这台计算机通讯 —— 也就是增长或是获取提交记录3d
话虽如此, 远程仓库却有一系列强大的特性code
首先也是最重要的的点, 远程仓库是一个强大的备份。本地仓库也有恢复文件到指定版本的能力, 但全部的信息都是保存在本地的。有了远程仓库之后,即便丢失了本地全部数据, 你仍能够经过远程仓库拿回你丢失的数据。blog
还有就是, 远程让代码社交化了! 既然你的项目被托管到别的地方了, 你的朋友能够更容易地为你的项目作贡献(或者拉取最新的变动)
如今用网站来对远程仓库进行可视化操做变得愈加流行了(像 Github 或 Phabricator), 但远程仓库永远是这些工具的顶梁柱, 所以理解其概念很是的重要!
git clone
远程操做的第一个命令,即配置使用远程仓库环境的命令,git clone
命令做用是在本地建立一个远程仓库的拷贝
执行git clone 后
OK,如今咱们有了一个本身项目的远程仓库
既然如今有了远程仓库,如今咱们来进行下一步,这个时候咱们又要谈一个概念了
既然你已经看过 git clone
命令了,我们深刻地看一下发生了什么。
你可能注意到的第一个事就是在咱们的本地仓库多了一个名为 o/master
的分支, 这种类型的分支就叫远程分支。因为远程分支的特性致使其拥有一些特殊属性。
远程分支反映了远程仓库(在你上次和它通讯时)的状态。这会有助于你理解本地的工做与公共工做的差异 —— 这是你与别人分享工做成果前相当重要的一步.
远程分支有一个特别的属性,在你检出时自动进入分离 HEAD 状态。Git 这么作是出于不能直接在这些分支上进行操做的缘由, 你必须在别的地方完成你的工做, (更新了远程分支以后)再用远程分享你的工做成果。
关于第一步骤操做你可能还有一个疑问
o/
?你可能想问这些远程分支的前面的 o/
是什么意思呢?好吧, 远程分支有一个命名规范 —— 它们的格式是:
<remote name>/<branch name>
所以,若是你看到一个名为 o/master
的分支,那么这个分支就叫 master
,远程仓库的名称就是 o
。
大多数的开发人员会将它们主要的远程仓库命名为 origin
,并非 o
。这是由于当你用 git clone
某个仓库时,Git 已经帮你把远程仓库的名称设置为 origin
了
不过 origin
对于咱们的 UI 来讲太长了,所以不得不使用简写 o
:) 可是要记住, 当你使用真正的 Git 时, 你的远程仓库默认为 origin
!
若是检出远程分支会怎么样呢?
执行命令 git checkout o/master
git commit
正如你所见,Git 变成了分离 HEAD 状态,当添加新的提交时 o/master
也不会更新。这是由于 o/master
只有在远程仓库中相应的分支更新了之后才会更新。
Git 远程仓库至关的操做实际能够概括为两点:向远程仓库传输数据以及从远程仓库获取数据。既然咱们能与远程仓库同步,那么就能够分享任何能被 Git 管理的更新(所以能够分享代码、文件、想法、情书等等)。
如今咱们来看看如何从远程仓库获取数据 —— 命令如其名,它就是 git fetch
。
你会看到当咱们从远程仓库获取数据时, 远程分支也会更新以反映最新的远程仓库。
在解释 git fetch
前,咱们先看看实例。这里咱们有一个远程仓库, 它有两个咱们本地仓库中没有的提交。
执行 git fetch
就是这样了! C2
,C3
被下载到了本地仓库,同时远程分支 o/master
也被更新,反映到了这一变化
注意:
git fetch
并不会改变你本地仓库的状态。它不会更新你的 master
分支,也不会修改你磁盘上的文件。
理解这一点很重要,由于许多开发人员误觉得执行了 git fetch
之后,他们本地仓库就与远程仓库同步了。它可能已经将进行这一操做所需的全部数据都下载了下来,可是并无修改你本地的文件
因此, 你能够将 git fetch
的理解为单纯的下载操做