github概念和實戰

世有因果知因求果發表於2015-04-23
  • fork: 通過fork操作,你將擁有了別人建立的repo的ownership,但是url卻變成了/youraccount/repo,這時你將可以做git push操作
  • clone: 該命令是直接將repo clone到本地,以方便更改及提交
  • pull request: 對於公開的專案repo,你直接clone的話你是不具有push許可權的,原因是你既不是owner,也不是collaborator。一個可行的方案就是你首先fork到你自己的賬號下,clone你自己賬號下的原始repo,本地修改,git push到你的原始repo,這時如果你覺得自己的修改對原始專案repo有用,那麼也可以通過pull request操作向原始專案repo owner來申請許可權。一旦pull request後,原始專案owner將會看到這個請求,如果他accept了,你的更改就被merge到原始repo中去了。

    pull request可以被理解為:自己fork過去的repo實際上是原始專案的一個branch,一旦pull request被操作,那麼就是把你的branch和原始repo的master branch進行合併操作

  • 如何更新自己的fork以便包含別的collaborator的貢獻?1. git remote add upstream <path_to_upstream_original_repo>;(add remote for upstream)2.git fetch upstream(fetch changes)3.git merge upstream/master master(merge them into local master)4.git push origin master(push your change to your remote fork)5.在github中執行pull request操作,以便把你的改動merge到upstream repo中去
  • 上述senario是以public repo來介紹的workflow,這種模式keep updated是一個困難和低效的事情,因此對於coorperate專案一般使用single repository workflow的模式。即:每個teammember都直接clone upstream repo,做自己的push/pull操作隨時保持update。但是問題又來了,就是每個人都直接向upstream master來做push,這樣工作流不隔離導致互相影響掣肘,為了解決這個問題,需要提出一種feature branch的策略:每個teammember在自己的branch上工作,做完之後提交pull request,等待teammember review後merge

相關文章