做者:軒邈git
工做流本質上是項目的流程管理和開發的協同約定。本文旨在經過有效的項目流程管理和高效的開發協同約定,提高減小項目的錯誤率,提高項目的穩定性,最終提升開發效率。github
工做流本質上是項目的流程管理和開發的協同約定,有效的項目流程管理和高效的開發協同約定有助於提高減小項目的錯誤率,提高項目的穩定性,最終提升開發效率,穩定而高效的產出。小程序
本篇主要以示例的方式帶你們回顧一下咱們在工做中可能使用到的幾種經常使用工做流。bash
Gitflow工做流中開發和發佈和開發雙分支並行的模式方便咱們在發佈時流暢過渡,而且提供一個緩衝的空間,方便檢查和恢復,這應該也是一些大型項目經常使用的一種模式。微信
示例:app
1. 建立中央倉庫ssh
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. 開發新功能ui
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
複製代碼
從中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
複製代碼
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
複製代碼
跟蹤遠程分支
git show-ref master
branch --set-upstream-to=refs/remotes/origin/changeTheme changeTheme//本地有該分支
git checkout --track origin/[分支名] //本地沒有該分支
複製代碼
原文連接: tech.meicai.cn/detail/57, 也可微信搜索小程序「美菜產品技術團隊」,乾貨滿滿且每週更新,想學習技術的你不要錯過哦。