git簡明實操模板

代碼版本管理的情景。

項目遠程倉庫中有兩個分支:

1】maseter分支作爲發佈分支,只接受要release到客戶手中的代碼,需要保證任何時候都能編譯通過

2】dev分支作爲開發分支,接受所有開發過程中的代碼,需要保證任何時候都可以編譯通過

你自己在本地以dev分支爲base進行開發,測試通過後merge進入master分支。在版本管理的時候你要面對的幾個主要問題:

1】保證自己的本地分支跟遠程分支同步

2】保證自己的commit跟分支整潔

3】合併代碼時候儘量少的衝突

4】自己的代碼合併進遠程倉庫後不會引起問題

下面從倉庫的建立開始,逐步進行介紹:

1】創建倉庫

git clone 遠程倉庫地址

2】切換到開發分支

git checkout dev

git pull        # git pull 是定期的操作,需要時長進行,這是減少衝突的保證

3】以開發分支爲base,創建自己的開發分支

git checkout -b myDev

4】在自己的開發分支中進行開發,提交自己的commit

git add -u
git commit -m "commit1"

git add -u
git commit -m "commit2"

git add -u
git commit -m "commit3"

git add -u
git commit -m "commit4"

5】現在碰到一個場景,你的當前task還沒有開發完,但是你的代碼已經有一段時間沒有同遠程dev分支進行同步了,這讓你很忐忑,你可以通過如下操作進行同步

git checkout dev       # 切換到本地的dev分支
git pull               # dev 分支同遠程dev分支進行同步

git checkout myDev     # 切換回自己的分支
git rebase dev         # 讓自己的myDev分支同遠程的dev分支進行同步,並保證自己的commit1、commit2、commit3、commit4處於所有commit記錄中的最新位置,這個過程中可能會出現衝突,需要及時解決,如果過這個同步過程進行的比較頻繁(如每隔一兩天進行一次)及時的話,很少會出現衝突,就算有衝突也是很小的衝突很容易解決

6】在myDev分支上繼續開發

git add -u
git commit -m "commit5"

git add -u
git commit -m "commit6"

git add -u
git commit -m "commit7"

git add -u
git commit -m "commit8"

7】經過這8個commit你已經完成了task的開發,完成了各種測試,需要將代碼提交到遠程dev分支中

git checkout dev
git pull
git checkout myDev
git rebase dev        # 將本地代碼與遠程代碼進行最後的同步


git rebase -i # 將本地的8個commit進行合併,以簡潔自己的版本管理,具體細節網上有很充足的教程
git push origin myDev:myDev    # 將本地的myDev分支推送到遠程倉庫的myDev新分支

# 需要注意的是上面雖然將本地的分支推到了遠程倉庫,但是此時的遠程倉庫myDev分支跟本地的myDev分支之間並沒有跟蹤關係,要創建他們之間的跟蹤關係還需要 git --set-upstream origin myDev:myDev 指令操作

8】在遠程倉庫中創建merge request將代碼合併進dev分支就可以了。

9】你提交的代碼進入了遠程的dev倉庫之後,經過別人pull測試合格了,可以release了,後面你開始準備將你的開發代碼合併進入release分支

10】切換到本地的master分支pick對應的代碼

git log --author="你的賬號名字"     # 查看你自己的提交記錄,獲取commitID

git checkout master
git pull

git cherry-pick commitID        # 前面你已經將commitID進行了合併,而且將commitID移到了最新的位置,所以你這裏的這一步就會少很多麻煩,如果出現衝突解決衝突,不過前面你如果嚴格按照這個流程進行開發,這裏理論上不會出現衝突

11】本地master分支代碼測試通過,提交到遠程自己的新分支

git push origin master:master-自定義遠程新分支後綴

12】遠程倉庫中提交merge request 或者是cherry-pick請求,將自己分支中的代碼合併到master分支中

13】其他人獲取了你在master上的代碼,聯調測試通過,等待代碼release

 

補充場景:

在6或者4的過程中,你又接收了新的task,這個task可以在你commit3的基礎上繼續進行,分兩種情況:

1】新的task你可以非常快的完成,基本上不會影響你現在的工作進度

git stash         # 將現在工作現場進行保護
git checkout commit3ID -b myDevNew     # 以commit3ID爲base創建一個新的開發分支

# 完成開發工作,提交代碼

git checkout myDev # 回到原來的開發分支

git stash pop        # 恢復原來的工作現場,繼續原來的開發工作

2】新的task是個長期的任務,且優先級比較高,需要停下手頭的task,首先完成新的task

git add -u
git commit -m "保存工作現場"

git checkout commit3ID -b myDevNew # 創建新的開發分支

# 完成新task的開發工作,提交代碼,流程如上面所本文所講

git checkout myDev     # 切換回原來的開發分支,繼續原task的開發

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章