首页 > 编程笔记

git clone命令:获取远程仓库

首先我们换到其他目录下,将 GitHub 上的仓库 clone 到本地。注意不要与之前操作的仓库在同一目录下。
$ git clone git@github.com:github-book/git-tutorial.git
Cloning into 'git-tutorial'……
remote:Counting objects:20, done.
remote:Compressing objects:100% (7/7), done.
remote:Total 20 (delta 3), reused 20 (delta 3)
Receiving objects:100% (20/20), done.
Resolving deltas:100% (3/3), done.
$ cd git-tutorial
执行 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 参数可以同时显示本地仓库和远程仓库的分支信息。

结果中显示了 remotes/origin/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,就是说以名为 origin 的仓库(这里指 GitHub 端的仓库)的 feature-D 分支为来源,在本地仓库中创建 feature-D 分支。

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

现在假定我们是另一名开发者,要做一个新的提交。在 README.md 文件中添加一行文字,查看更改。
$ git diff
diff ——git a/README.md b/README.md
index af647fd..30378c9 100644
—— 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 ed9721e] Add feature-D
1 file changed, 1 insertion(+)

推送 feature-D 分支

现在来推送 feature-D 分支。
$ git push
Counting objects:5, done.
Delta compression using up to 8 threads.
Compressing objects:100% (2/2), done.
Writing objects:100% (3/3), 281 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:github-book/git-tutorial.git
ca0f98b..ed9721e feature-D -> feature-D
从远程仓库获取 feature-D 分支,在本地仓库中提交更改,再将 feature-D 分支推送回远程仓库,通过这一系列操作,就可以与其他开发者相互合作,共同培育 feature-D 分支,实现某些功能。

推荐阅读