git-book: https://git-scm.com/book/zh/v2git
項目分支流程管理規範: https://www.jianshu.com/p/217d2b3bc96d <- I should click it!測試
我關注的點:指針
分支:一條時間線,一條執行線,每次修改都會在分支上留下一個「疙瘩」,就像毛線同樣。blog
分支命名:主要是一個團隊商量,你們達成約定,規範,方便理解其用途。
好比feature-xxx, develop, release, master, fixbug-xxx
團隊在使用時,嚴格按照分支用途規範本身的行爲,每一個分支應該如何用,具備什麼操做限制。生命週期
分支生命週期:分支分爲本地分支與倉庫分支,前者的生命週期視其建立目的決定,後者是與項目」同生共死「的。
舉個例子:
master: 生產環境的穩定版本分支,用於線上發佈,僅能從release分支/fixbug-xxx分支合併,不容許在該分支提交修改。
release: 測試分支,測試過程當中發現bug,能夠直接在該分支上修改,
測試經過後,方可將其合併到master分支,同時須要合併到develop分支。
develop: 開發環境的穩定分支,是公共開發環境的rootNode。
feature-xxx: 功能分支,基於develop分支建立而來,開發人員自測功能完畢後,可將其合併回develop。
fixbug-xxx: 緊急修復分支,基於master分支建立而來,測試經過後方可合併回master,
也須要將其合併到develop分支。開發
合併: 如何規範的合併分支?
1.產生有效的合併結果;
2.合併記錄具有可讀性;
3.合併過程出現衝突,留下解決記錄;get
變基: https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BAit
描述: 變基是將from分支上的一系列操做「剪切」到to分支,就好像操做一開始就是基於to分支進行的。
做用: 使得提交記錄變得整潔,是一條直線,沒有分叉ast
遴選: 將某個分支上的commit提交到另外一個分支上。class
回滾: 將HEAD頭指針指向以前的某個commit,若是須要保存,還要再次提交(push)一次。
標籤: 分爲簡單標籤和詳細標籤,後者包含的信息會比前者更多,按需選擇,我選擇詳細標籤。
做用: 給某個commit打上標記,方便往後追溯、查找————一般拿來做爲版本標示。
對標籤常見的操做: 建立
普通查看,統配模式查看
刪除
推送至遠程倉庫
檢出某個標籤,查看相關內容
緊急修復: 基於穩定版本分支新建一個分支,而後進行bug修復,待測試經過,即可以將其合併回穩定版本分支。
屬於臨時舉措,在其職責結束以後,其分支的生命週期也同時結束。
commit規範: 要求能清晰的描述本次commit的類型爲什麼(好比提交功能/修復bugX),及其內容。
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
git經常使用命令速查表:
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
git版本回退:
------------------------------------------------------------------------------------------------
建立遠程分支:
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
git_reset_hard推送後找回文件方法
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
git_cherry-pick