文章適用於團隊合作的時候多個人向一個repo貢獻,整理了Git從fork分支開始的過程。
1. Fork
在github上你要貢獻的repo(eg.http://github/remote/test.git)之后稱上游倉庫。點擊fork,將上游倉庫fork到你的github,之后稱為遠程庫(eg.http://github/chercher/test.git)
2. Clone
選擇本地文件夾,之后稱為本地庫
git clone http://github/chercher/test.git
3. 創建dev分支
進入文件夾中,創建dev分支作為你的開發分支,當你完成了這個開發分支的時候直接將這個分支的內容push到你的遠程庫。一般一個分支對應一個issue,開發完畢后即可銷毀
git checkout -b dev 創建並切換至dev分支,是git branch dev + git checkout dev
4. 創建upstream分支
upstream分支是用於同步上游倉庫的,可以同步其他人對上游倉庫的更改
git remote add upstream http://github/remote/test.git
這時候用git remote 可以查看遠程分支,git remote -v 可以查看具體路徑
這時候應該有origin、upstream兩種分支且分別有fetch和push的路徑,origin是你的遠程庫,upstream是你的上游倉庫
tips. 如果遠程分支路徑出錯了,git remote set-url branch_name new_url 替換為具體的你的出錯的分支名和新的路徑即可
5. 同步上游倉庫
在提交自己的修改之前,先同步上游倉庫到master
git remote update upstream
git rebase upstream/master
6. 修改文件push到遠程庫
對本地庫進行修改后,git add changed_file & git commit -m"message" 添加文件到暫存區然后提交,寫入相應信息。
git push origin dev:dev 這時你的遠程庫將會多出一個dev分支
7. 提出pull request
這時候在你的遠程庫中點擊create pull request,就可以等待別人review你的代碼后merge入上游倉庫了
8. 合並commit
一個issue有時候並不是一次commit就可以完成的,這時候就涉及到潔癖患者們用rebase合並commit的過程了
第一次commit的時候並不需要做rebase的操作,rebase是將之后的多次commit合並到之前的一個commit當中
以第二次修改為例,在commit之后進行 git rebase -i HEAD~2
tips. 如果出現"Could not execute editor" 則設置 git config即可,git config --global core.editor /usr/bin/vim
之后再執行rebase命令,可以看到這兩次的提交,現在狀態都是pick。只選擇第一個commit為p,其他的都為s,即把新的commit並入之前的。
修改完成后寫入,然后自動跳轉至另一個頁面修改commit的信息
之后繼續按照第6步push --force到遠程庫的流程進行就可以了~