Git 開發;流程
阿新 • • 發佈:2020-09-03
1. 流程
develop
開發分支:開發人員每天都需要拉取/提交最新程式碼的分支test
測試分支:開發人員開發完並自測通過後,釋出到測試環境的分支release
預釋出分支:測試環境測試通過後,將測試分支的程式碼釋出到預發環境的分支(這個得看公司支不支援預發環境,沒有的話就可以不採用這條分支)master
線上分支:預發環境測試通過後,運營/測試會將此分支程式碼釋出到線上環境hotfix
分支:在master
發現新的bug
時,需要建立一個hotfix
,完成後,合併到master
和develop
分支
大致流程
- 開發人員每天都需要拉取、提交最新的程式碼到
develop
- 開發完畢後,開始 整合測試,測試無誤後提交到
test
分支,併發布到測試環境,交由測試人員測試 - 測試環境通過後,釋出到
release
分支上,進行預釋出環境測試 - 預發環境通過後,釋出到
master
分支上並打上標籤tag
- 如果線上分支出現
bug
,這時開發者應該基於預釋出(沒有預釋出環境就用master
分支),新建一個bug
分支用來臨時解決bug
,處理完成後申請合併到預釋出分支(好處是不會影響正在開發中的功能)
1.1 克隆指定分支
場景:要求使用非master分支(如next分支)進行開發
git clone -b next “git地址”
1.2 優雅的在分支上開發
1、克隆到本地的分支為 next
分支,但是不能直接在上面開發,而是需要另外建立分支:
# 建立並切換到新的分支 next-dev,其中 add_login 為分支說明(可不加)
git checkout -b next-dev/add_login
2、在 next-dev
分支上開發完後, 將程式碼提交到本地倉庫:
git add . # ".“的意思就是儲存新增所有修改到暫存區
git commit -m “註釋” # 暫存區中的修改提交到本地倉庫,commit 規範可參考 6.1 commit 規範
3、將 next-dev
分支合併到 next
分支:
# 先切換到 next 分支 git checkout next # 切換之前一定要先執行第二步 # 從遠端拉取最新的程式碼,當你合併分支的時候,可能其他同事又提交了新的內容,所以最好先拉取一次最新的程式碼 git pull origin next # 合併(如果合併發現有衝突,可以使用視覺化工具檢視衝突的程式碼,如:pycharm、BCompare4 git merge next-dev # 將原生代碼推送到遠端 git push origin next:next # ”:“前面的是本地分支的名字,”:"後面的是遠端分支的名字
注意:合併之前先
commit
,合併之前先git pull
2. 常用命令
# ssh 方式需要配置 SSH Key,https 需要每次都輸入使用者名稱和密碼
$ cd /d/python-code/
$ git clone [email protected]:wangy8961/flask-vuejs-madblog.git
git init # 初始化本地倉庫
git status # 檢視狀態
git add . # 新增到暫存庫
git commit -m 'xxx' # 提交
git push -u origin master # 推送到遠端
git remote add origin “HTTPS地址” # 關聯遠端倉庫
# 從遠端拉取最新程式碼到本地
git pull # 自動合併
git fetch # 不合並
# 分支
git checkout -b feat/add-artical # 建立新的分支 feat,並切到新分支,add-artical 為對這個分支的描述
git branch -d dev # 刪除 dev 分支
3. 拉取最新程式碼
# 檢視已關聯的倉庫
$ git remote -v
origin https://gitee.com/hubery_jun/flask-vuejs-madblog (fetch)
origin https://gitee.com/hubery_jun/flask-vuejs-madblog (push)
# 類似於 git pull,也是用於拉取最新程式碼
$ git fetch
# 或拉取指定的遠端主機上的分支,如 origin 上的 master
$ git fetch origin master
git fetch 與 git pull 的區別
git fetch
:- 遠端跟蹤分支:可以更改遠端跟蹤分支
- 拉取:會將資料拉取到本地倉庫,但是不會自動合併或修改當前的工作
commitID
:本地庫中master
的commitID
不變,還是等於 1
git pull
:- 遠端跟蹤分支:無法對遠端跟蹤分支操作,必須先切回到本地分支然後建立一個新的
commit
提交 - 拉取:從遠處獲取最新版本,併合併到本地,會自動合併或修改當前的工作
commitID
:本地庫中master
的commitID
發生改變,變成了 2
- 遠端跟蹤分支:無法對遠端跟蹤分支操作,必須先切回到本地分支然後建立一個新的
用法
1、git pull
git pull <遠端主機名> <遠端分支名>:<本地分支名>
# 將遠端主機 origin 的 master 分支拉下來,與本地 dev 分支合併,若未指定本地分支(那麼將與本地當前分支合併)
git pull origin master:dev
# 用 git fetch 表示
git fetch origin master:dev
git merge dev
2、git fetch
# 方法一
git fetch origin master # 從遠端 origin 倉庫的 master 分支拉取最新程式碼
git log -p master.. origin/master # 比較本地的倉庫和遠端倉庫的區別
git merge origin/master # 將遠端拉取的最新程式碼合併到本地倉庫,遠端和本地的合併
# 方法二
git fetch origin master:temp # 從遠端 origin 倉庫的 master 分支拉取最新程式碼到本地並在本地建立一個新的分支 temp
git diff # 比較 master 分支和 temp 分支的不同
git merge temp # 合併 temp 分支到 master 分支
git branch -d temp # 刪除 temp 分支
注意:
git fetch
更安全也更符合實際要求,可以在合併前,先檢視更新情況,根據實際情況再決定是否合併
4. git push 常用用法
一般形式:
git push <遠端主機名> <本地分支名> <遠端分支名>
# origin 為遠端主機名,將本地 next 分支推送到遠端 next 分支
git push origin next:next
省略遠端分支:
# 表示將本地分支推送到與之存在追蹤關係的遠端分支(通常兩者同名),如果該遠端分支不存在,則會被新建
git push origin master
如果省略本地分支名,則表示刪除指定的遠端分支,因為這等同於推送一個空的本地分支到遠端分支,等同於 git push origin --delete master
:
git push origin :refs/for/master
如果當前分支與遠端分支存在追蹤關係,則本地分支和遠端分支都可以省略,將當前分支推送到 origin
主機的對應分支 :
git push origin
如果當前分支只有一個遠端分支,那麼主機名都可以省略,形如 git push
,可以使用 git branch -r
,檢視遠端的分支名:
git push
5. 分支管理
git checkout -b dev # 建立並切換到分支
git branch -d dev # 刪除分支
git branch # 檢視當前分支
6. 程式碼提交
新增到儲存庫、合併分支
git add . # 新增所有
git commit -m 'xxxx' # 提交
git checkout master # 切換到主分支
git merge dev # 合併 dev 分支到 master 主分支
git branch -d dev # 刪除 dev 分支
git branch # 檢視當前分支
6.1 commit 規範
commit
的內容也應該遵守規範,一般來說是
1. fix:xx
:表示修改了XX程式碼2. feat:xx
:新增了XX需求3. style:xx
:修改了部分的樣式4. delete:xx
: 刪除了某些無用的部分
推送到遠端
git push -u origin master # 推送到遠端 master
注意:合併分支必須先切換分支,刪除分支不是必須的!但是流程最好是:先建立分支 ---> 合併分支 ---> 提交 ---> 刪除分支 ----> 建立分支(第二天)
打標籤
git tag v0.1 # 打標籤 v0.1
git tag # 檢視所有標籤
git show v0.1 # 檢視 v0.1 標籤(內容)
# 1. 同步單個標籤
$ git push origin v0.1
# 2. 同步所有標籤
$ git push --tags
# 或者:
$ git push origin --tags