我胡漢三又回來啦蜂莉,上篇《GitHub初探蜡娶,遠程倉庫怎么玩?》只提到了遠程倉庫和本地倉庫的關(guān)聯(lián)使用映穗,這篇文章將繼續(xù)記錄我利用GitHub進行多人協(xié)作開發(fā)Android項目的經(jīng)驗窖张。
如果你對我以前關(guān)于Git和GitHub的文章感興趣可以點擊閱讀:
Git的安裝與基本使用
GitHub初探,遠程倉庫怎么玩
1 主倉庫建立分支
首先在主分支上建立一個分支蚁滋,就起名為firstbranch吧宿接。
2 協(xié)作者fork主倉庫
然后用另一個GitHub賬號左上角搜索框搜索TestForGit倉庫,然后右上角點擊Fork,就會把該倉庫復(fù)制到你的GitHub賬戶中辕录。
協(xié)作者打開自己主頁睦霎,可以看到已經(jīng)復(fù)制了一個同樣的TestForGit倉庫。
協(xié)作者復(fù)制自己倉庫的網(wǎng)址走诞,找個位置clone一下就可以復(fù)制到本地了副女。
git clone https://github.com/LoserAndSeeker/TestForGit.git
3 問題之fork后與主倉庫(原倉庫)同步
這時候我們面臨一個問題,你Fork之后你的遠程倉庫和原倉庫并不會同步的蚣旱,也就是說如果在你在本地修改的這段時間原倉庫有了更新肮塞,你與原倉庫的合并就會出現(xiàn)很多問題。
GitHub網(wǎng)頁版并沒有提供同步的功能服務(wù)姻锁,據(jù)說GitHub的桌面端有提供這種功能,但我沒有用過猜欺。
經(jīng)過多方查找資料我找到了兩種方法可以讓fork后的倉庫與原倉庫同步:
方法一 clone大法
協(xié)助者先把自己本地修改的倉庫上傳到協(xié)助者GitHub或者建立一個分支位隶,然后去clone原倉庫的最新版本網(wǎng)址,復(fù)制到本地开皿。
本地于是有了同一個項目的兩個版本涧黄,一個是你的,一個是原倉庫最新的赋荆。你可以將其與自己修改的分支合并笋妥,或者Git pull你的遠程倉庫讓其合并。
而別人GitHub上clone下來的倉庫是無法push的窄潭,你可以輸入:
git remote -v
這樣可以查看到你的倉庫是跟哪個遠程倉庫綁定的春宣,
這是協(xié)助者的界面,卻依舊可以看出遠程倉庫地址是是原倉庫
這時候你可以打開項目地址嫉你,進入.git下的config配置文件月帝,
在箭頭所指位置添加你的GitHub賬號密碼,然后把網(wǎng)址后面的用戶名倉庫名都改成你的幽污,就可以將該倉庫指向作為協(xié)作者的你的遠程倉庫了嚷辅。
然后你再在Git bash 中輸入“git remote -v”命令會發(fā)現(xiàn),該倉庫的指向已經(jīng)變成你的了距误。
然后你就可以在本地修改了再push了簸搞,不過這種辦法只適用一兩次的更新操作扁位,而且特別,趁俊,域仇,怎么說呢,傻则酝,所以我還是推薦下面的第二種殉簸。
方法二 fetch大法
第一步 配置原倉庫路徑
git remote add upstream https://github.com/原倉庫用戶名/原倉庫名.git
然后你可以繼續(xù)輸入:
git remote -v
然后便可以看到你的遠程倉庫已經(jīng)多了一個原倉庫地址。
第二步 抓取原倉庫的修改文件
git fetch upstream
輸入這條語句后沽讹,本地的Git就會自動抓取你配置的的原倉庫最新版本文件般卑,你接下來便可以將你本地的版本與原倉庫最新版本合并。
但在合并之前最好將你本地的分支切換到主分支master爽雄。
git checkout master
第三步 合并遠程原倉庫的master分支
git merge upstream/master
到這個時候蝠检,你的本地倉庫便已經(jīng)與fork的原倉庫完全同步了。當(dāng)然挚瘟,合并過程中可能會有沖突叹谁,解決后繼續(xù)合并就是了。
4 協(xié)作者本地開發(fā)后乘盖,上傳協(xié)作者遠程倉庫
協(xié)助者在自己的電腦上為項目添加了新的代碼或文件焰檩,怎么將這些更新推送到原倉庫上呢?在沒有添加SSH秘鑰的情況订框,首先你要將自己的最新版本提交到自己的遠程倉庫析苫。
現(xiàn)在協(xié)助者在TestForGit項目里新加了一個NewDocument.txt的文件,里面寫了一句話穿扳。
衩侥。
然后push四連到協(xié)助者的GitHub上。
git add .
git commit -m "NewDocument"
git pull
git push
5 協(xié)作者遠程倉庫pull request到主倉庫分支
現(xiàn)在協(xié)作者上已經(jīng)有了新的修改矛物,怎么才能把這個修改提交到原倉庫上去呢茫死?
這就要用到GitHub的pull request功能了。
協(xié)作者在自己的GitHub上依次點擊pull request和New pull request履羞,新建一個合并請求峦萎。
然后點擊那個綠色的Create new request按鈕,在輸入備注信息后確認(rèn)就可以了吧雹。
6 主倉庫分支與master合并
現(xiàn)在我們回到主分支的視角骨杂,在原倉庫的GitHub還是那個可以看到收到了一條pull request的信息。
我們點進去看一下雄卷,
可以看到已經(jīng)收到了協(xié)作者發(fā)來的合并請求搓蚪,信息表明了是LoserAndSeeker:master想要與主倉庫lonelywilliam:firstbranch分支進行合并。
并且GitHub自動判斷這個協(xié)助者分支與想要合并的原倉庫分支沒有沖突丁鹉,你點一下Merge pull request 就會自動合并了妒潭。
不過先別急著點悴能,主分支也要先確定一下協(xié)助者想要合并什么內(nèi)容吧?萬一不是自己想要的可不行雳灾,
然后確定這個請求可以接收后漠酿,點擊之前綠色按鈕Merge pull request,再填上備注后確認(rèn)就可以自動合并了谎亩。
之后再回到原倉庫的firstbranch分支炒嘲,可以看到,已經(jīng)新添了一個NewDocument文件匈庭,還有之前的提交記錄夫凸。
7 原倉庫的firstbranch與master分支合并
在上面那張圖片可以看到,firstbranch分支旁邊有一個New pull request按鈕阱持,點擊這個按鈕就可以讓原倉庫的分支與master主分支合并了夭拌。
剩下來合并的流程和上一步一樣,我就不贅述了衷咽。
好了鸽扁,我對GitHub遠程倉庫的探索就到此完畢了,感謝你的閱讀镶骗!