原文連線:
.master 分支
.develop 分支
.feature 分支
.release 分支
.hotfix 分支
**倉庫 origin 任何乙個機器都可以, 它是邏輯上乙個**單元. 理論上可以隨時切換, 一般固定為一台機器.
集中式的版本庫有兩個永久存在的主分支:
master 分支
develop 分支
master 分支上存放的應該是隨時可供在生產環境中部署的**(production ready state).
當開發活動告一段落, 產生了乙份新的可供部署的**時, master 分支上的**會被更新. 同時, 每一次更新, 都有對應的版本號標籤(tag)
初始化 master:
$ mkdir your_project_name
$ cd your_project_name
$ git init
初始化後在本地**庫會自動建立乙個.git隱藏檔案, 這個就是本地**庫.詳見 c 步驟
預設的名稱就是 master
develop 分支是儲存當前最新開發成果的分支.
通常這個分支上的**也是可進行每日夜間發布的**(nightly build). 因此這個分支有時也可以被稱作「integration branch」.
建立 develop 分支:
$ git branch develop
$ ssh user@host
$ git init --bare /path/to/repo.git
確保寫上有效的user(ssh的使用者名稱), host(伺服器的網域名稱或ip位址), /path/to/repo.git(你想存放倉庫的位置).
注意, 為了表示是乙個裸倉庫, 按照約定加上.git副檔名到倉庫名上.
$ git clone ssh://user@host/path/to/repo.git
$ git push origin master
$ git push origin develop
$ git pull --rebase origin master
$ git status
完成編輯修改這些檔案後, 用老套路暫存這些檔案, 並讓 git rebase 完成剩下的事:
$ git add
$ git rebase --continue
重新解決衝突(重頭再來, 回到解決衝突之前):
$ git rebase --abort
$ git checkout master
切換到 master
$ git checkout develop
切換到 develop
$ git commit -m 「add distributed」
[master ea34578] add distributed
1 file changed, 1 insertion(+), 1 deletion(-)
引數 m 後面是注釋
助性的分支, 以幫助團隊成員間的並行開發, 特性的簡單跟蹤, 產品的發布準備事宜, 以及快速的解決線上問題.
這些輔助性分支往往只要有限的生命週期, 因為他們最終會被刪除.
輔助性分支包括:
.feature 分支
.release 分支
.hotfix 分支
輔助性分支一般位於非**倉庫 origin 機器上.
feature 分支(有時也可以被叫做「topic分支」)通常是在開發一項新的軟體功能的時候使用, 這個分支上的**變更最終合併回 develop 分支或者乾脆被拋棄掉(例如實驗性且效果不好的**變更)
feature 分支從 develop 分支拉取, 最後合併於 develop 分支. 是 release 分支的基礎, 生命週期早於 release 分支.
feature 分支命名慣例: feature-*
建立 feature 分支:
$ git checkout -b myfeature develop
switched to a new branch 「myfeature」
feature 分支合併到 develop 分支:
$ git checkout develop
switched to branch 『develop』
$ git merge --no-ff myfeature
updating ea1b82a…05e9557
(summary of changes)
刪除 feature 分支:
$ git branch -d myfeature
deleted branch myfeature (was 05e9557).
release 分支是為發布新的產品版本而設計的.
在這個分支上的**允許做小的缺陷修正、準備發布版本所需的各項說明資訊(版本號、發布時間、編譯時間等等)
release 分支從 develop 分支拉取, 最後合併於 develop 分支和 master 分支. 在 feature 分支之後操作, 生命週期晚於 feature 分支.
乙個 release 分支建立的時候, develop 分支已經合併了乙個或多個 feature 分支功能.
release 分支命名慣例: release-*
建立 release 分支:
$ git checkout -b release-1.2 develop
switched to a new branch 「release-1.2」
$ ./bump-version.sh 1.2
files modified successfully, version bumped to 1.2.
合併 release 分支到 master:
$ git checkout master
switched to branch 『master』
$ git merge --no-ff release-1.2
merge made by recursive.
(summary of changes)
$ git tag -a 1.2
合併 release 分支到 develop:
$ git checkout develop
switched to branch 『develop』
$ git merge --no-ff release-1.2
merge made by recursive.
(summary of changes)
刪除 release 分支:
$ git branch -d release-1.2
deleted branch release-1.2 (was ff452fe).
feature 分支從 master 分支拉取, 最後合併於 develop 分支和 master 分支. 與 feature 分支和 release 分支無關係.
feature 分支是用於快速修復生產環境的 bug 而產生的.
hotfix 分支命名慣例: hotfix-*
建立 hotfix 分支:
$ git checkout -b hotfix-1.2.1 master
switched to a new branch 「hotfix-1.2.1」
$ ./bump-version.sh 1.2.1
files modified successfully, version bumped to 1.2.1.
合併 hotfix 分支到 master :
$ git checkout master
switched to branch 『master』
$ git merge --no-ff hotfix-1.2.1
merge made by recursive.
(summary of changes)
$ git tag -a 1.2.1
合併 hotfix 分支到 develop :
$ git checkout develop
switched to branch 『develop』
$ git merge --no-ff hotfix-1.2.1
merge made by recursive.
(summary of changes)
刪除 hotfix 分支:
$ git branch -d hotfix-1.2.1
deleted branch hotfix-1.2.1 (was abbe5d6).
Git 合併分支 推送分支
1 本地倉庫與遠端倉庫同步,提取所有它獨有的資料到本地分支,供後續操作。git fetch origin2 把遠端倉庫中分支名為aimbranch中的 合併到本地倉庫中你當前所在的分支上。git merge no ff origin aimbranch3 把本地倉庫中你所在的分支中的 推送到遠端倉庫...
Git分支管理,建立分支
該鏈結博主詳細的描述了git 最主要的一句話 在不同的分支進行版本管理,只有在自己的分支上才會生效 合併衝突 修改主分支檔案 合併兩個或多個分支 建立乙個分支,在主分支master上切出乙個開發分支 git checkout b 分支名稱建立好新分支後,你現在所有的操作都是在新分支上進行 git b...
Git建立分支管理分支
一 clone repository clone github 上的repository,如下 git clone git github.com fbing design patterns.git 1二 管理分支 1 檢視分支 1 檢視本地分支 使用 git branch命令,如下 git bran...