Git flow 練習用專案
-
主要分支
- master: 永遠處在 production-ready 狀態,也就是跟 itunes 上的版本一致
- develop: 最新的下次發佈開發狀態
-
支援性分支
- feature: 開發新功能都從 develop 分支出來,完成後 merge 回 develop
- release: 要 release 的版本,只修 bugs。從 develop 分支出來,完成後 merge 回 master 和 develop。這裏使用 build version 當作 release name, ex: release/1.0.0
- hotfix branches: 等不及 release 版本就必須馬上修 master 趕上線的情況。會從 master 分支出來,完成後 merge 回 master 和 develop。一樣使用 build version 當作 hotfix name, ex: hotfix/1.0.0
-
小工具(建議熟悉 git 指令之後再來使用)
-
push branch 到遠端
git flow feature publish some_awesome_feature
git push origin feature/some_awesome_feature
-
追蹤一個遠端的 branch
git flow feature track some_awesome_feature
git checkout -b feature/some_awesome_feature -t origin/feature/some_awesome_feature
-
刪除遠端的 branch
git push origin :feature/some_awesome_feature
- 注意:git-flow 小工具不會自動刪除已經存在遠端的 feature branch,要手動刪除
- 先確定 develop 是最新的
git pull origin develop
- 對 feature branch 做
git rebase develop -i
(這裏最難,要學會 interactive mode,可以拿掉某個 commit 以及合併或修改內容) - 在從 develop bracnh 做
git merge feature/some_awesome_feature -–no-ff
,-–no-ff 的意思是會強制留一個 merge commit log 記錄,這可以讓 commit tree 看清楚發生了 merge 動作。(因為我們剛做了 rebase,而 git 預設的合併模式是 fast-forward,所以如果不加 –no-ff 是不會有 merge commit 的) 這個 merge commit 的另一個額外方便之處是,如果想要 reset/revert 整個 branch 只要 reset/revert 這個 commit 就可以了 - 如果此 feature branch 有 remote branch,要先砍掉
git push origin :feature/some_awesome_feature
再git push origin develop
(這是因為 rebase 一個已經 push 出去的 repository,然後又把修改的 history push 出去,會讓 develop branch 產生大問題)
- revert 可以針對某個 commit 進行還原,並留下紀錄(之前的 commit)
- rebase 重新 commit,使用 -i 可以用來修正 commit 的紀錄
- reset 清除掉某個 commit 之後的 commit
reset A
reset HEAD^
保留修改的內容在 working treereset HEAD^ --soft
保留修改的內容在 staging areareset HEAD^ --hard
全部砍光光~
待補充