fork+pull提交模式
在公司項目中,大多都是通過“主題分支”的方式,進行開發與合並代碼。但是,這樣又一個弊端就是:合並代碼后需要刪除分支。同時,如果是開源的項目的話,非項目中的成員是無法創建分支的,也就無法貢獻代碼。
這個時候,就體現出fork的優勢所在了。fork就是把源倉庫復制一份到自己的github倉庫下,這樣非項目中的成員也可以任意修改代碼,修改完代碼,只要提交pr就可以了。后面的事情就是,項目的所有者要做的了。
同時,項目的所有者也不需要設定主分支的權限,比如:成員不能自行把開發的主題分支直接合並到dev或者master分支上。只有管理者才有這種權限,否則會不便於管理。fork提交的pr不會產生主題分支,也就是不需要合並完pr后刪除分支。
如何使用fork模式
-
fork項目
-
設置源項目的遠程倉庫:
git remote add 起一個名字 源項目地址
,用於后面的更新代碼。 -
在dev上直接修改代碼
-
在push前保證所在分支是最新的:
git pull --rebase 剛才起的名字 dev
,這里因為是在dev分支上直接修改,所以獲取源項目的dev分支的最新代碼。 -
推送到你fork來的倉庫上:
git push
,push前確定是否關聯的是dev分支:git branch -vv
-
最后在源項目中提交pr,請求合並你的改動。
在上述過程中,容易混淆的地方就是’源項目‘和’fork的項目’:你沒有辦法修改’源項目‘,只能修改fork到你自己的github賬號倉庫下的’fork的項目‘。在提交的時候,需要保證‘fork的項目’是最新,這樣在pr前,就可以在你的本地把所有的沖突解決完成,順利的合並到’源項目‘上。
總結
如果你是項目中的成員,有創建分支的權限,那么用fork模式或者主題分支的模式都可行的,同時沒有什么太大的區別。
對於向開源項目貢獻代碼,那就一定要用到fork模式。