Git管理多个远程仓库

Git管理多个远程仓库

通常本地git仓库只对应一个远程仓库,但是当我们从别的项目fork时,就会同时出现多个远程仓库,此时若要与官方保持同步,一般的做法是增加多个远程仓库,通过定期merge的方式以获得官方最新的功能。

举个栗子:https://github.com/StevenX911/33-js-concepts

我从别的同志fork过来的,并拉到本地,操作如下:

git clone https://github.com/StevenX911/33-js-concepts  & cd 33-js-concepts

此时执行git branch -a,本地仅显示我自己的本地仓库和远程仓库

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

注意此时远程仓库名为origin

我们增加官方仓库为本地另一个仓库,起名为upstream

git remote add upstream https://github.com/stephentian/33-js-concepts.git

再次执行git branch -a,输出结果如下:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

咦!没变化,哪里不对呢?原来上述命令仅完成远程仓库设置,需要执行git pull upstream才能拉取新仓到本地。

注意pull时需要显式指定远程仓库名称

再执行git branch -a,输出结果如下:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/upstream/master

接下来我们需要将官方仓库合并支本地master即可完成本地master更新,命令如下:

$ git pull upstream master
From https://github.com/stephentian/33-js-concepts
 * branch            master     -> FETCH_HEAD
Updating 12d66f1..a7fe65e
Fast-forward
 .gitignore   |  1 +
 .travis.yml  |  3 +++
 README.md    | 46 ++++++++++++++++++++++++++++++++++------------
 package.json |  8 ++++++++
 4 files changed, 46 insertions(+), 12 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 .travis.yml
 create mode 100644 package.json

最后将 master 推送自己的远程仓库,完成更新,注意显式指定远程分支名称origin

$ git push origin
Enumerating objects: 75, done.
Counting objects: 100% (75/75), done.
Delta compression using up to 4 threads
Compressing objects: 100% (71/71), done.
Writing objects: 100% (73/73), 14.57 KiB | 2.91 MiB/s, done.
Total 73 (delta 27), reused 0 (delta 0)
remote: Resolving deltas: 100% (27/27), completed with 1 local object.
To https://github.com/StevenX911/33-js-concepts.git
   12d66f1..a7fe65e  master -> master

(全文完)

风清洋

风清洋

保持原动力,迎接每一天

评论