天天看點

git - 遠端分支

對于使用者來說,git給人送出到本地的機會。我們可以在自己的機器上建立不同的branch,來測試和存放不同的代碼。

對于代碼管理者而言,git有許多優良的特性。管理着不同的分支,同一套源代碼可以出不一樣的版本。

市面上有非常多的相關書籍和教程。我個人比較喜歡的是:

ProGit(中文版)    

http://git.oschina.net/progit/ 關于git的master和origin     http://lishicongli.blog.163.com/blog/static/1468259020132125247302/

剛開始的時候我沒注意master和origin這兩個名稱,直到操作遠端分支的時候,我才有了比較多的了解

遠端分支的操作

# 檢視遠端分支,會顯示出遠端分支名與url
$ git remote -v
origin    ssh://[email protected]:29418/workspace/product1 (fetch)
origin    ssh://[email protected]:29418/workspace/product1 (push)      

這裡采用gerrit來進行代碼稽核,用預設的29418端口

如何添加遠端分支?

使用git remote add指令,例如:

$ git remote add r1 ssh://[email protected]:29418/work
# 添加一個遠端分支,url為ssh://[email protected]:29418/work;分支别名為r1
# 檢視已有的遠端分支
$ git remote -v
r1    ssh://[email protected]:29418/work (fetch)
r1    ssh://[email protected]:29418/work (push)
# 這時使用git pull同步代碼,git會問你要分支名
$ git pull
fatal: 未指定遠端版本庫。請通過一個URL或遠端版本庫名指定,用以擷取新送出。
# 我們可以選擇從r1庫同步代碼
$ git pull r1
# 如果不想每次git pull都寫上分支名,那麼可以把遠端分支命名為origin,git會預設從這裡pull
$ git remote rm r1
# 看看還有沒有遠端分支r1
$ git remote -v
# 開始添加
$ git remote add origin ssh://[email protected]:29418/work
$ git remote -v
origin    ssh://[email protected]:29418/work (fetch)
origin    ssh://[email protected]:29418/work (push)
# 添加成功,pull一次試試
$ git pull      
另一個工程裡,檢視所有分支,包括遠端分支      
$ git branch -a
* working
  remotes/origin/demo1
  remotes/origin/HEAD -> origin/master
  remotes/origin/demo2
  remotes/origin/demo3
  remotes/origin/working
  remotes/origin/master
  remotes/origin/tab1 
      
#列出所有分支中,倒數5個
$ git branch -a | head -5 

#表示強制切換到分支
$ git checkout -f [branch name]       

未跟蹤遠端分支

Ubuntu14.04 git version 1.9.1

遠端代碼庫新增了一個目錄,repo sync下來後,在新增目錄裡建立一個分支

git pull時出現如下錯誤

Please specify which branch you want to merge with.
See git-pull(1) for details
    git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
    git branch --set-upstream-to=origin/<branch> project-dev      

那麼按照提示,先找到遠端分支

$ git branch -a
* project-dev
  remotes/m/Project-dev -> origin/Project-dev
  remotes/origin/Project-dev
  remotes/origin/master      

目前分支為project-dev;想要跟蹤origin/Project-dev,輸入以下指令:

$ git branch --set-upstream-to=origin/Project-dev project-dev      

分支 project-dev 設定為跟蹤來自 origin 的遠端分支 Project-dev

設定後,git pull試一試

Already up-to-date.

對于Github,建立一個倉庫後會有提示

git remote add origin https://github.com/RustFisher/test.git
git push -u origin master      

附錄

用法:git remote [-v | --verbose]

   或:git remote add [-t <分支>] [-m <master>] [-f] [--tags|--no-tags] [--mirror=<fetch|push>] <名稱> <url>

   或:git remote rename <舊名稱> <新名稱>

   或:git remote remove <名稱>

   或:git remote set-head <名稱> (-a | --auto | -d | --delete |<分支>)

   或:git remote [-v | --verbose] show [-n] <名稱>

   或:git remote prune [-n | --dry-run] <名稱>

   或:git remote [-v | --verbose] update [-p | --prune] [(<組> | <遠端>)...]

   或:git remote set-branches [--add] <名稱> <分支>...

   或:git remote set-url [--push] <名稱> <新的位址> [<舊的位址>]

   或:git remote set-url --add <名稱> <新的位址>

   或:git remote set-url --delete <名稱> <位址>

    -v, --verbose         冗長輸出;必須置于子指令之前