這篇是說明參與協作時,建議的git工作流程
(其實是自己會搞混,為了以後省時間留紀錄....Orz)
這邊以上圖做例子解說
-
fork本專案 (104corp/f2e-technote) 到自己的遠端
-
到自己的遠端repo,clone專案 (user/f2e-technote) 到本機端
git clone [email protected]:user/f2e-technote.git
- 分成兩個branch:master用來接收 (104corp/f2e-technote) 的更新、writing用來編輯和合併master更新
git branch -m master writing // 將master改名為writing
git checkout -b master // 新建並移動到master分支
- 加入遠端repo,並改名為自己習慣的簡稱
git remote rename origin myRepo
git remote add 104corp [email protected]:104corp/f2e-technote.git
- 設定每個本地branch追蹤的remote branch
git fetch 104corp // 將遠端資料拉回來以便設定
git branch -u 104corp/master master
git branch -u myRepo/master writing
- 取消master的push功能,防止手殘 Orz
git remote set-url --push 104corp no-push // 將push的url改成字串,使push會失敗
- 修改 git config 讓push時即使本機端branch name和遠端不同,也可以push到指定的遠端branch
git config push.default upstream // 預設為matching,找到相同名稱branch才push
- 完成了! 可以使用以下指令檢查~
git config -l // 列出所有config
git remote -v // 列出所有遠端庫
git remote show <remote repo name> // 顯示該遠端repo詳細資料,包含push、pull對應的本地branch
- 每次完成編輯commit前,先做一次更新再commit
- 暫存目前的所有變更
[writing] git add .
[writing] git stash
- 從 104corp/f2e-technote 拉更新到本機
[writing] git checkout master
[master] git pull
- 合併master到writing分支
[master] git checkout writing
[writing] git merge master // fast-forward
- 將暫存的變更載回來,並commit
[writing] git stash list // 查看所有暫存的清單
[writing] git stash apply 0 // 通常最新的都在最上面,index為0
[writing] git add .
[writing] git commit
- push到自己的遠端repo,開啟github頁發送pull request
[writing] git push
若不想要 pull merge 時有merge commit,可以參考有關rebase的教學,以下列出幾個常見的:
// 移花接木:現有分支上的commit接到另一條分支
[writing] git rebase --onto <[master] 新接點commit sha> <[writing] 現有接點commit sha>
// 先執行pull,再將現有分支的變更 rebase 上去
[master] git pull --rebase
git config --global commit.template $HOME/.gitmessage.txt
// 只能使用絕對路徑,一個檔案就能跨多個 repo 使用
- 教學文件
- 參考範本:前端工程團隊建議規範
- 教學文件
- 參考範本:104-vip-prelogin-f2e
- 教學文件
- 參考範本:104-vip-prelogin-f2e