標籤:
目標讀者:瞭解 Git 的基本概念,能夠使用 Git 進行基本的本地和遠程操作。
有關 Git 的基礎知識可以參見 知乎回答-怎樣使用 GitHub?,天豬(劉勇)給出了一些很好的學習資料。
本文介紹了小團隊中 Git 管理的基本使用流程。
小團隊的代碼管理可以採用這樣一種方式:項目存在一個中心遠程倉庫,作為團隊成員進行代碼交流的主要場所。同時可以存在一些成員遠程倉庫,用於局限在團隊中部分成員間的代碼交流。並將成員分成以下幾類不同的角色:負責人、普通組員、預發布責任人 和 版本修複責任人。下面的章節具體介紹了各類角色的 Git 使用流程。
基本須知:
需要多個人共同完成的分支可以建立遠程分支,單個人完成的分支只建立本地分支即可。
一、負責人
負責人的職責:管理遠程倉庫。
負責人的工作均可直接在遠程倉庫完成。
1.建立項目
- 建立公有項目
- 添加README.md
- 添加認證
- 添加忽略檔案
- 建立 dev 分支
2.其他
二、組員
工作流程:
- 複製項目
- 簽出並建立 dev 分支,使其跟蹤遠端 origin/dev 分支。
- 在dev分支基礎上建立自己的分支 member* 。
- 在自己的分支上添加檔案
- 在自己的分支上修改檔案
- 合并到dev分支
- 推送dev分支到origin/dev分支
// 更新 .gitignore 檔案
- 從 dev 建立一個分支 ignore (如果預測變更頻繁就建立一個遠程分支,現在一般都有模板,偶爾有個沒有忽略的直接在dev分支上改就可以了)
- 更新忽略檔案
- 儘快合并到\推送到 origin/dev 分支 (避免兩個組員同時更改該檔案造成衝突。)
1.建立本地倉庫
$ cd [項目路徑] $ git clone https://coding.net/tangyikejun/GitTest2.git $ git checkout -u -b dev origin/dev$ git checkout -b [MEMBER_NAME];
2.更新本地倉庫
$ git add .$ git commit -m”your comments” // … // 多次提交後完成了一項新的功能,自己的分支下能正常運行$ git checkout dev$ git merge --no-ff [MEMBER_NAME] // [MEMBER_NAME] 是自己的分支名稱$ git push
3.更新 .gitignore 檔案
$ git checkout dev //… // 更新忽略檔案$ git add .$ git commit -m“更新.gitignore檔案”$ git push
4.
常用查詢命令
$ git branch // 查看自己所在分支 以及自己所擁有的分支$ git log --pretty=“%h - %cn(%ci): %s” --graph // 查看自己的提交記錄$ git reflog // 查看自己的操作曆史$ git status // 查看本地倉庫當前的檔案狀態$ git blame [FILE_PATH] // 查看檔案的每一部分最後由誰改動
5.意外情況處理
意外:推送代碼到遠程 dev 分支時發生衝突。
解決方案:先把 遠程倉庫的 origin/dev 分支拉取下來,解決衝突檔案後再推送。平時的時候盡量避免不同組員更改同一個檔案。
$ git push // … // 遇到錯誤$ git pull // … // 解決衝突$ git add .$ git commit -m”solve conflict:由於XX原因出錯,修改XX檔案解決問題”$ git push
意外:不小心把自己的工作成果push到了master分支。
解決方案:先對master進行回退,再使用git push -f將錯誤的提交刪除。
三、預發布責任人 & 版本修複責任人1.預發布責任人
當需要發布新的版本時,預發布責任人:
- 基於最新的 dev 分支建立一個 release-版本號碼 分支
- 進行修繕工作
- 合并到 dev 分支
- 合并到 master 分支
- 打標籤
- 刪除 release-版本號碼 分支
$ git checkout dev$ git pull$ git checkout -b release-1.2 //… // 進行修繕工作$ git checkout dev$ git merge --no-ff release-1.2 $ git checkout master$ git merge --no-ff release-1.2 // 在評論中寫入相比上個版本新增的功能,修複的bug等詳細內容$ git tag v1.2$ git branch -d release-1.2
使用 git show [TAG_NAME]可以查看標籤對應的提交資訊。
2.版本修複責任人
當新發布的版本發現 bug 時,版本修複責任人:
- 基於最新的 master 分支建立一個 hotfix-版本號碼 分支
- 進行debug工作
- 合并到 master 分支
- 打標籤
- 合并到 dev 分支
- 刪除 hotfix-版本號碼 分支
$ git checkout master$ git pull$ git checkout -b hotfix-1.2.1 //… // 進行修繕工作$ git checkout master$ git merge --no-ff hotfix-1.2.1 $ git tag v1.2.1 $ git checkout dev$ git merge --no-ff hotfix-1.2.1 // 在評論中寫入修複的bug等詳細內容$ git branch -d hotfix-1.2.1
3.意外情況處理
意外:某組員完成自己的任務後合并到 dev 分支,推送時發現 release 分支的修繕工作更改了自己原來的檔案,產生了衝突。
解決方案:把 origin/dev 分支拉取下來,將衝突解決後再次提交。(注意這裡解決衝突後 master 分支上的檔案與該組員的工作成果依舊是有衝突的。除非該組員解決衝突時不更改 relese 時的修繕代碼,而僅僅更改自己的代碼來解決問題。因此,一旦有衝突產生,最好雙方進行合理交流達成一致意見。減少衝突。)
四、成員遠程倉庫
當某個團隊成員希望其他成員協助完成他的編程任務時,該成員可以為自己的本地倉庫建立一個遠程倉庫作為成員遠程倉庫,方便其他成員協助。建立成員遠程倉庫可以避免中心遠程倉庫的代碼交流繁雜混亂。
成員遠程倉庫在在操作上是中心遠程倉庫的簡化版。僅在細微處有所不同。
1.求助者
$ git remote add [ALIAS_NAME] [GIT_ADRESS] $ git push [ALIAS_NAME] [BRANCH_NAME]:[BRANCH_NAME_REMOTE] $ git pull
舉例:
$ git remote add binRepo https://coding.net/chenbin/GitTest2.git $ git push binbin binRepo:master //由於是第一次推送,該操作已經使得分支binbin 跟蹤了遠程分支 binRepo/mastr
當某個分支 a 跟蹤了遠程分支 b,即 b 成為 a 的預設拉取來源,也因此,一個本地分支同一時間只能跟蹤一個遠程分支。
讓本地某分支跟蹤遠程分支的命令
$ git branch -u [REPO_NAME]/[REMOTE_BRANCH_NAME] [BRANCH_NAME] // git branch -u binRepo/master binbin
2.協助者
- 複製成員遠程倉庫
- 在 master 分支基礎上建立自己的分支 member*
- 在自己的分支上修改代碼
- 合并到 master 分支後推送到成員遠程倉庫
$ git clone https://coding.net/chenbin/GitTest2.git $ git checkout -b member1; //… //修改代碼$ git add .$ git commit -m"我幫你把XX功能完成了"$ git checkout --no-ff merge member1;$ git push
http://www.cnblogs.com/tangyikejun/p/4217561.html
Git 在小團隊中的管理流程(轉)