「Git」常用工作流介紹

WirelessSprucetec發表於2018-11-26

作者:軒邈

簡介

工作流本質上是專案的流程管理和開發的協同約定。本文旨在通過有效的專案流程管理和高效的開發協同約定,提升減少專案的錯誤率,提升專案的穩定性,最終提高開發效率。

Git常用工作流介紹

一、工作流

​ 工作流本質上是專案的流程管理和開發的協同約定,有效的專案流程管理和高效的開發協同約定有助於提升減少專案的錯誤率,提升專案的穩定性,最終提高開發效率,穩定而高效的產出。

​ 本篇主要以示例的方式帶大家回顧一下我們在工作中可能使用到的幾種常用工作流。

一、Gitflow工作流

​ Gitflow工作流中開發和釋出和開發雙分支並行的模式方便我們在釋出時流暢過渡,並且提供一個緩衝的空間,方便檢查和恢復,這應該也是一些大型專案常用的一種模式。

示例

1. 建立中央倉庫

2. 建立開發分支(為master分配) 管理者:

git branch develop
git push -u origin develop //指定upstream
複製程式碼

開發者:

git clone ssh://user@host/path/to/repo.git
git checkout -b develop origin/develop
複製程式碼

3. 開發新功能

git checkout -b xuanmiao develop
touch xuanmiao.file
git status
git add .
git commit -m '新功能開發完成'
複製程式碼

4. 開發分支整合新功能

git pull origin develop
git checkout develop
git merge xuanmiao
git commit -am'合併xuanmiao分支'
git push
git branch -d xuanmiao
複製程式碼

5. 推薦使用mc-pr,提高PR效率 github.com/meicai-fe/p…

6. 釋出

git checkout -b release-0.1 develop //該分支專門用於清理髮布、執行所有測試、更新文件和其它為下個釋出做準備操作的地方

git checkout master
git merge release-0.1
git push
//Git有提供各種勾子(hook),即倉庫有事件發生時觸發執行的指令碼。可以配置一個勾子,在你push中央倉庫的master分支時,自動構建好對外發布。

git checkout develop
git merge release-0.1
git commit -am '合併release-0.1分支'
git push

* git push origin release-0.1  //如果沒有自動釋出指令碼,可以選擇將開發分支推送到倉庫,也可刪除,有tag備份,不過為了程式碼的整潔性不推薦。
git branch -d release-0.1
複製程式碼

7. 打tag

git tag -a 0.1 -m "釋出0.1版" master
git push --tags
複製程式碼

8. 發現bug

git checkout -b issue-#001 master
# Fix the bug
git checkout master
git merge issue-#001
git push

git checkout develop
git merge issue-#001
git push
git branch -d issue-#001
複製程式碼

二、Forking工作流

​ 從中Gitflow我們會發現幾個問題,比如合併分支時master和開發分支重複操作,管理者和開發者不夠分離等。接下來我們看forking工作流。 ​ Forking工作流充分利用了Git中PR、分支管理和多人協作的優勢,是非常通用和強大的一種模式。可以應用多種工作場景(也可以用來接受團隊外的PR,許多開源專案使用這種模式)。

示例

1. 倉庫管理者建立裸庫

git init --bare repo.git //github建立一個倉庫就可以了
複製程式碼

2. 開發者fork正式倉庫

git clone 倉庫地址   //origin遠端別名指向開發者自己的服務端倉庫,而不是正式倉庫。
git remote add 正式倉庫名 正式倉庫地址
複製程式碼

3. 開發功能

git checkout -b some-feature
// 開發新功能
git commit -a -m "新功能開發完成"
複製程式碼

4. 開發完成

git push origin feature-branch
複製程式碼

5. 發起pull request(推薦使用mc-pr

6. 專案管理者整合開發者的功能

*7. 開發者和正式倉庫做同步 *

git pull 正式倉庫名 個人倉庫名
複製程式碼

三、其他常用工作命令

1. 重寫上次提交歷史(commit錯誤 重新編輯一下提交的comment,修改多個可使用git rebase -i HEAD~n)

方法一:

git commit --amend
複製程式碼

方法二:

git reset --soft HEAD^      

//編輯檔案                

git commit -a -c ORIG_HEAD
複製程式碼

2. 刪除遠端分支

git push origin :分支名
複製程式碼

3. 刪除git倉庫中untracked files

   git clean -fd
複製程式碼

4. 克隆指定分支

   git clone -b appointBranch 倉庫地址
複製程式碼

*5. 統計每個人的程式碼行數 *

git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done 
複製程式碼
  1. stash常用操作

    git stash list //檢視stash清單
    git stash show //檢視內容
    git stash apply //恢復但不刪除stash
    git stash pop   //恢復並刪除stash
    git stash apply stash@{0} //恢復指定stash
    git stash drop stash@{0} //刪除指定stash
    git config --global alias.stash-unapply '!git stash show -p | git apply -R'
    git stash-unapply //撤銷應用的stash
    複製程式碼
  2. 跟蹤遠端分支

    git show-ref master
    branch --set-upstream-to=refs/remotes/origin/changeTheme  changeTheme//本地有該分支
    git checkout --track origin/[分支名] //本地沒有該分支
    複製程式碼

原文連結: tech.meicai.cn/detail/57, 也可微信搜尋小程式「美菜產品技術團隊」,乾貨滿滿且每週更新,想學習技術的你不要錯過哦。

相關文章