Git从远程仓库获取

/ 0评 / 1

前一篇文章(Git推送至远程仓库)中,我门把 GitHub 上新建的仓库设置成了远程仓库,并向这个仓库 push 了 feature-D 分支。现在,所有能够访问这个远程仓库的人都可以获取 feature-D 分支并加以修改。

在本文中我门从实际开发者的角度出发,在另一个目录下新建一个本地仓库,学习从远程仓库过去内容的相关操作。这就相当于我门刚刚执行过 push 操作的目标仓库又有了另一个新开发者共同开发。

git clone ---- 获取远程仓库

获取远程仓库

首先我门换到其他目录下,将 GitHub 上的仓库 clone 到本地。注意不哟啊与之前操作的仓库在同一目录下。

$ git clone git@github.com:zhxiaowu/git-example.git
Cloning into 'git-example'...
remote: Counting objects: 20, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 20 (delta 3), reused 20 (delta 3), pack-reused 0
Receiving objects: 100% (20/20), done.
Resolving deltas: 100% (3/3), done.
Checking connectivity... done.

执行 git clone 命令后我门会默认处于 master 分之下,同时系统会自动将 origin 设置成该远程仓库的标识符。也就是说,当前本地仓库的 master 分支与 GitHub 端远程仓库(origin)的 master 分支在内容上是完全相同的。

$ git branch -a
* master
 remotes/origin/HEAD -> origin/master
 remotes/origin/feature-D
 remotes/origin/master

我门用 git branch -a 命令查看当前分支的相关信息。添加 -a 参数可以同时显示本地仓库和远程仓库的分支信息。

结果中显示了 remote/orgin/feature-D,证明我们的远程仓库中已经有了 feature-D 分支。

获取远程仓库的 feature-D 分支

我们试着将 feature-D 分支获取至本地仓库。

$ git checkout -b feature-D origin/feature-D
Branch feature-D set up to track remote branch feature-D from origin.
Switched to a new branch 'feature-D'

-b 参数的后面是本地仓库中新建分支的名称。为了便于理解,我们将其命名为 feature-D,让它与远程仓库的对应分支保持同名。新建分支名称后面是获取来源的分支名称。例子中指定了 origin/feature-D,就时说以名为 orgin 的仓库(这里指 GitHub 端的仓库)的 feature-D 分支为来源,在本地仓库中创建 feature-D 分支。

向本地的 feature-D 分支提交更改

现在假定我们是另一个名开发者,要做一个新的提交。在 README.md 文件中添加一行文字,查看更改。

$ git diff
--- a/README.md
+++ b/README.md
@@ -3,3 +3,4 @@
 - feature-A
 - fix-B
 - feature-C
+ - feature-D

按照之前学习过的方式提交即可。

$ git commit -am "Add feature-D"
[feature-D a5af290] Add feature-D
 1 file changed, 1 insertion(+)

推送 feature-D 分支

现在来推送 feature-D 分支

$ git push
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 284 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:zhxiaowu/git-example.git
 0085811..a5af290 feature-D -> feature-D

从远程仓库获取 feature-D 分支,在本地仓库中提交更改,再将 feature-D 分支推送回远程仓库,通过这一系列操作,就可以与其它开发者相互合作,共同培育 feature-D 分支,实现某些功能。

git pull ---- 获取最新的远程仓库分支

现在我门放下刚刚操作的目录,回到原来的那个目录下。这边的本地仓库中智创建了 feature-D 分支,并没有在 feature-D 分支中进行任何提交。然而远程仓库的 feature-D 分支中已经有了我门刚刚推送的提交。这是我门就可以使用 git pull 命令,将本地的 feature-D 分支更新到最新状态。当前分支为 feature-D 分支。

$ git pull origin feature-D
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:zhxiaowu/git-example
 * branch feature-D -> FETCH_HEAD
 0085811..a5af290 feature-D -> origin/feature-D
Updating 0085811..a5af290
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

GitHub 端远程仓库中的 feature-D 分支是最新状态,所以本地仓库中的 feature-D 分支就得到了更新,今后只需要像平常一样在本地进行提交在 push 给远程仓库,就可以与其它开发者同时在同一个分支中进行作业,不断给 feature-D 增加新功能。

如果两个同事修改了同一部分的源代码,push 是就很容易发生冲突。所以多名开发者在同一个分支中进行操作时,为减少冲突情况的发生,建议更频繁地进行 pushpull 操作。


文章内容参考:《GitHub入门与实践》

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注