git 遠端倉庫

峻峰飛陽發表於2018-05-18

倉庫

Git 遠端倉庫為多人協作開發提供了極大的便捷,前面的 Git 操作都是在本地倉庫上進行的,遠端倉庫是託管在因特網的或者自己搭建的 Git 服務,一個本地可以跟蹤多個遠端倉庫,遠端有讀寫許可權,在 GitHub(最流行程式碼託管網站)上直接克隆的遠端倉庫沒有寫的許可權,Fork 到自己帳戶,則有讀寫許可權。

$ git remote

這個命令是管理遠端倉庫的,幾個常用命令和選項

  1. git remote 列出當前的遠端倉庫
  2. git remote -v 列出所有遠端倉庫和URL
  3. git remote add 新增遠端倉庫
  4. git remote remove 刪除遠端倉庫
  5. git remote rename 遠端倉庫改名

克隆的倉庫會有預設的遠端倉庫叫 origin, 並會建立預設 master 分支,跟蹤遠端倉庫的預設分支 origin/master,遠端倉庫的分支要加上遠端倉庫名,以區分本地分支。
本地倉庫新增遠端倉庫後需要先拉取遠端倉庫的提交,才可以向遠端倉庫推送

$ git fetch

從遠端倉庫拉取資料,可以用 checkout 簽出分支,也可以用 merge 合併到本地分支

$ git pull

從遠端倉庫拉取資料,併合併到預設分支

$ git push

本地修改提交後,用這個命令推送到遠端倉庫,其他人就可以看到你的提交和修改了
這三個命令都可以在後面加上遠端倉庫名拉取、推送到指定的遠端倉庫

分支

遠端倉庫也有多個分支,使用 git branch -a 列出所有分支

$ git branch -a
* master
  remotes/m/master
  remotes/origin/master

顯示完整路徑的是遠端分支,中間的是遠端倉庫名,後面為遠端分支名
選項 -vv 顯示本地分支跟蹤的遠端分支

$ git branch -vv
* master c4ffc28 [origin/master] new

本地分支可以自由切換跟蹤的遠端分支

  1. git checkout --track origin/master 本地新建 master 分支,並跟蹤遠端分支 origin/master
  2. git checkout -b new origin/master 本地新建 new 分支,跟蹤遠端分支 origin/master
  3. git branch -u origin/master 設定當前分支跟蹤的遠端分支
$ git branch -u  m/master
Branch master set up to track remote branch master from m.
$ git branch -vv
* master c4ffc28 [m/master: ahead 2] new

如果本地分支設定了遠端分支,檢視跟蹤的遠端分支時有 behind 則需要先 pull 拉取更新,才能向遠端分支推送提交

$ git branch -vv
* master 2b3f489 [origin/master: ahead 7, behind 8] Merge branch 'dev'
遠端分支新建、刪除

在遠端新建分支:git push <遠端倉庫><本地分支>:<遠端分支>

$ git push m master:new
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 663 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To git@github.com:Pythians/bbs-catch.git
 * [new branch]      master -> new

刪除遠端倉庫分支: git push <遠端倉庫> --delete <遠端分支>

 $ git push m --delete new
To git@github.com:Pythians/bbs-catch.git
 - [deleted]         new

當然也可以在託管的網站上新建、刪除、修改預設遠端分支,具體操作的託管的網站來。

遠端分支一般用來和其他人合作開發,難免有同時修改的情況,合併就需要處理可能的衝突,總之在合併前,溝通好可以減少不必要的麻煩。

相關文章