Git是分散型版本管理系统,担我门前面讲述的斗士针对单一本地仓库的操作。下面,我们开始接触在云端的远程仓库。远程仓库顾名思义,是与我门本地仓库想对独立的另一个仓库。这里我门使用 GitHub 作为远程仓库。让我门先在 GitHub 上创建一个仓库,并将其设置为本地仓库的远程仓库。
如果你对 Git 命令的基本操作还不太熟悉,请参考之前的三篇文章,或许对你有些帮助。
首先我在自己的 GitHub 上新建一个仓库,名为“git-example”,注意创建时不要勾选 Initialize this repository with a README.md 选项(图1)。因为一旦勾选该选项,GitHub 端的仓库就会自动生成README.md 文件,从创建之初便与本地仓库失去了整合性。虽然到时也可以强制覆盖,但为了防止这一情况发生还是建议不要勾选该选项,直接点击 Create repository 创建仓库。
图1:不要勾选该选项
git remote add ---- 添加远程仓库
在 GitHub 上创建的仓库路径为“git@github.com:[UserName]/git-example.git”。现在我门用 git remote add
命令将它设置成本地仓库的远程仓库。
$ git remote add origin git@github.com:w4o/git-example.git
按照上述格式执行 git remote add
命令之后,Git 会自动将 git@github.com:w4o/git-example.git 远程仓库的名称设置为 origin(标识符)。
git push ---- 推送至远程仓库
推送至 master 分支
如果想将当前分支下本地仓库中的内容推送给远程仓库,需要用到 git push
命令。现在假定我们在 master 分之下进行操作。
推送至 master 以外的分支
$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (20/20), 1.52 KiB | 0 bytes/s, done.
Total 20 (delta 3), reused 0 (delta 0)
To git@github.com:w4o/git-example.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
注意:这里需要首先配置 Github 的 SSH key 才能像上面那样直接通过ssh 方式访问 github。如果不知道如何配置 ssh key ,请参照文章:为GitHub添加SSH key
像这样执行 git push
命令,当前分支的内容就会被推送给远程仓库 origin
的master
分支。-u
参数可以在推送的同时,将 origin 仓库的 master 分支设置为本地仓库当前分支的 upstream(上游)。添加了这个参数,之后运行 git pull 命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从 origin 的master 分支获取内容,省去了另外添加参数的麻烦。
执行该操作后,当前本地仓库 master 分支的内容将会被推送到 GitHub 的远程仓库中。在 GitHub 上也可以确认远程 master 分支的内容和本地 master 分支相同。
推送至 master 以外的分支
除了 master 分支之外,远程仓库也可以创建其他分支。举个例子,我门在本地仓库中创建 feature-D 分支,并将它已同名形式 push 至远程仓库。
$ git checkout -b feature-D
Switched to a new branch 'feature-D'
我们在本地仓库中创建了 feature-D 分支,现在将它 push 给远程仓库并保持分支名称不变。
$ git push -u origin feature-D
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:w4o/git-example.git
* [new branch] feature-D -> feature-D
Branch feature-D set up to track remote branch feature-D from origin.
现在,在远程仓库的 GitHub 页面就可以查看到 feature-D 分支了。
文章内容参考:《GitHub入门与实践》
[…] 前一篇文章(Git推送至远程仓库)中,我门把 GitHub 上新建的仓库设置成了远程仓库,并向这个仓库 push 了 feature-D 分支。现在,所有能够访问这个远程仓库的人都可以获取 feature-D 分支并加以修改。 […]