git@osc中協做開發、複製項目、貢獻代碼

git@osc可讓咱們託管代碼,進行版本控制,同svn等相似平臺同樣,能夠幫助咱們實現團隊協做開發,不管你是不是項目團隊成員。本教程徹底適用GitHubhtml

1. 概念

協做開發:顧名思義,就是由多個項目成員共同開發一個項目。git

fork:GitHub提供很是方便功能,能夠一鍵將其餘人的項目複製到本身帳號下。github

pull request:非項目成員貢獻代碼一種方式。shell

2. git@osc如何協做開發

由項目建立者進入指定項目,在菜單欄上點擊「設置」,會看到以下界面安全

而後點擊「添加成員」eclipse

在用戶欄中,輸入成員名稱,這塊我總以爲有點詭異,下午同事剛剛註冊了一個git帳號,而後我在此處嘗試了各類辦法怎麼也搜索不到指定用戶,大概過了能有2個小時後,有神奇般的能搜索到了,我懷疑git@osc後臺作處理了?或者帳號註冊後有生效時間?無論怎麼樣,在這塊輸入要找的用戶名便可,好比:我要添加一位叫「楊小楊」的同窗,輸入「楊小楊」是找不到的,但輸入他的帳號郵箱「yangshuangjun」就能夠找到,截止到目前,我仍是沒有摸清這個搜索用戶的路數。
svn

找到成員後,分配角色,一個是管理員、一個是開發者學習

這兩個角色的區別詳見這裏:http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9fetch

ok後,點擊添加用戶便可spa

隨後,這個項目成員經過egit客戶端直接clone項目,修改並提交代碼,實現協做開發。

3. git@osc的fork功能

什麼狀況下使用fork?

當你對某個公開的開源項目感興趣,你能夠經過fork功能方便地將該項目複製到你的帳號下,以便學習或者貢獻代碼。

首先找到你想要的項目,好比:

點擊上圖右上角的Fork按鈕,確認後,該項目就會跑到你的名下了。意思是你對該項目作了一個分叉,至關於OO裏邊的繼承。

此時,利用egit將該項目import至eclipse工程中,而後你能夠修改代碼,而後commit and push來更新,就像你本身的項目同樣。


4. git@pull request功能

何時使用pull reques呢?

使用pull request前提條件是你fork他人代碼,並進行了修改。當你修改代碼並commit後,只能push到你帳號下的該項目,原項目並不會獲得任何改變。此時,若是你想把你的代碼貢獻到原項目中,那麼,此時就須要使用pull request操做了。

見下圖:點擊這裏來建立一個pull request

點擊後,見下圖:

此處無非就是將你提交(貢獻)的代碼作一下詳細的說明,讓原做者充分了解你這次提交的目的。

編寫完畢後,點擊「提交 pull request」便可,截止到目前,你已經作完了pull request的建立工做;

此時,原項目就會收到一個pull request的申請,在這裏會有顯示

因爲我這裏沒有實際的請求,因此顯示的是0,若是有的話,點擊pull requests

而後就會在界面上顯示詳細信息,包括:pull request的標題、詳細描述以及詳細的代碼。

在該界面上,管理員能夠選擇「接受pull request」,若是選擇 接受 的話,那麼你所提交的代碼將會自動合併到原項目中,也就完成了你的貢獻。

5. fork後同步原做者修改

當你fork一個項目後,若是原做者更新了代碼,此後你的項目是確定不會自動更新的。那如何讓fork的項目與原項目同步呢?簡單的方法固然是再clone一份,不過這樣會丟失你對代碼修改。

此時,你須要手工同步原項目。

首先進入到clone你fork的項目的本地庫

爲了與原項目同步,首先須要將原始項目fetch到本地。

git remote add origin https://github.com/xxx/xxx.git #別名origin,指向原始項目
git fetch origin master #fetch orginal下面的master分支

git fetch命令不會自動merge。

而後比較本地的master分支和origin/master分支的差異,而後決定是否進行合併。可以使用merge命令進行合併。

git merge origin/master #將原項目和主項目合併

固然,咱們也能夠不用fetch命令,直接用pull命令,差異在於pull命令會自動merge

git pull origin master

get pull命令其實至關於git fetch 和 git merge

在實際使用中,git fetch更安全一些。由於在merge前,咱們能夠查看更新狀況,而後再決定是否合併。

合併後再使用git push命令提交。

第一次push的時候,可能會出現上述的permission denied錯誤提示,緣由是你沒有爲你的項目添加一個public key。

接下來咱們爲本機添加一個。



複製id_rsa.pub裏面的內容,進入項目主頁,點擊「Admin」按鈕,選擇「Deploy Key」,點擊「Add deploy key」,將複製的內容粘在裏面,如圖:

添加完public key後,如今就能夠push了。

結束語

使用git@osc能夠有效幫助咱們實現協做開發。團隊成員能夠經過受權直接提交代碼,非團隊成員能夠fork他人的項目,可使用pull request貢獻代碼,當fork的原始項目有更新時,也能夠手動同步項目。

參考資料

[1] 凱哥.git@osc中team開發、fork和pull request的用法.http://my.oschina.net/kzhou/blog/150290

[2] Gevin.github上fork別人項目後如何與源項目保持同步.http://gevin.me/370.html

相關文章
相關標籤/搜索