在多人開發(fā)的環(huán)境下复濒,良好的管理機制是必須的针姿。
分支管理策略
1. master
- 主分支-用于發(fā)布版本
- 發(fā)布版本時打一個tag
- 遠程同步
2.dev
- 開發(fā)分支-用于開發(fā)
- 遠程同步
3.user's dev
- 個人的開發(fā)分支-合并到
dev
上 - 不需要遠程同步
4.feature
- 新功能分支-用于開發(fā)新功能
- 如需多人開發(fā),則遠程同步相恃,否則無需遠程同步
5.bug
- 專門用于修改bug
- 不需要遠程同步
注意事項
工作現(xiàn)場
JillZsy
分支開發(fā)到一半辜纲,需要臨時改個bug,那就把目前的工作區(qū)存儲下來
$ git stash
切換到dev
開bug
分支修改bug拦耐,修改提交完成之后耕腾,再回到JillZsy
分支
查看保存的工作現(xiàn)場
$ git stash list
stash@{0}: WIP on dev: 7a3972a readme tee
stash@{1}: WIP on dev: 7a3972a readme tee
Git把stash內(nèi)容存在某個地方,類似于棧杀糯∩ò常恢復工作現(xiàn)場有兩種方法:
-
apply
+drop
--apply
恢復不刪除stash內(nèi)容,drop
刪除stash內(nèi)容 -
pop
-- 恢復同時刪除stash內(nèi)容
//默認最后存儲的stash@{1}
$ git stash apply
$ git stash drop
//指定某個stash
$ git stash apply stash@{0}
$ git stash drop stash@{0}
---------------------------------------------------------
$ git stash pop //此時pop:stash@{1}
//指定某個stash
$ git stash pop stash@{0}
分支遠程同步問題(以dev為例)
1.user1
推送分支到遠程倉庫
$ git push origin dev
-
user2
獲取分支
- 必須創(chuàng)建遠程
origin
的dev
分支到本地 -
pull
代碼 -
pull
報錯的話火脉,關(guān)聯(lián)本地dev
分支與origin/dev
分支
//創(chuàng)建遠程`origin`的`dev`分支到本地
$ git checkout -b dev origin/dev
//pull
$ git pull
//關(guān)聯(lián)`dev`與`origin/dev`
$ git branch --set-upstream-to=origin/dev dev
使用--no-ff
強制禁用Fast forward
牵舵,git log --graph --pretty=oneline --abbrev-commit
能看到分支信息
//Fast forward
$ git merge dev
$ git log --graph --pretty=oneline --abbrev-commit
* 3e32c20 (HEAD -> master, dev) dev readme modify //無分支信息
* c3b3ef8 new Project
//禁用Fast forward
$ git merge --no-ff -m "merge no-ff" dev
$ git log --graph --pretty=oneline --abbrev-commit
* d439267 (HEAD -> master) merge no-ff
|\
| * 5bea520 (dev) dev readme modify too //有分支信息
|/
* c3b3ef8 new Project
rebase
push之前
把分叉的log整理成一條直線。更加直觀倦挂。
$ git log --graph --pretty=oneline --abbrev-commit
* fac28d0 (HEAD -> master) dev merge no-ff
|\
| * 5b00cb5 (dev) dev readme modify
|/
* c3b3ef8 new Project
//對于未push到遠程的log有效
$ git rebase
$ git log --graph --pretty=oneline --abbrev-commit
* 759e900 (HEAD -> master) dev readme modify
* c3b3ef8 new Project