git第十三講基于github的協(xié)同開發(fā)基礎

使用github的主要目的肯定是為了多人可以進行協(xié)作開發(fā)舒岸,這一部分首先簡單介紹一下git協(xié)作開發(fā)的基礎,下一部分再來深入探討基于分支開發(fā)的模式坪它。

設置協(xié)同開發(fā)人員

在這里我們分別使用兩個用戶來模擬整個開發(fā)的流程骤竹,此處使用ynkonghao和kh121兩個用戶來進行模擬。

首先使用kh121創(chuàng)建一個項目p1往毡,創(chuàng)建時選擇初始化操作蒙揣。創(chuàng)建完畢之后需要做的第一步是把協(xié)作的開發(fā)人員加入到項目中,選擇settings

github協(xié)同開發(fā)基礎
github協(xié)同開發(fā)基礎

之后選擇Collaborators添加合作者开瞭,將ynkonghao這個用戶添加進去

github協(xié)同開發(fā)基礎
github協(xié)同開發(fā)基礎

添加完成之后懒震,提示需要等待對方進行驗證。

github協(xié)同開發(fā)基礎
github協(xié)同開發(fā)基礎

如果對方打開了通知提醒就會在頁面上有一個提醒的消息惩阶,如果沒有打開通知提醒挎狸,就需要等待郵件提醒

github協(xié)同開發(fā)基礎
github協(xié)同開發(fā)基礎

此時選擇接受邀請之后,就可以開始進行協(xié)同開發(fā)断楷。

github協(xié)同開發(fā)基礎
github協(xié)同開發(fā)基礎
github協(xié)同開發(fā)基礎
github協(xié)同開發(fā)基礎

協(xié)同開發(fā)的基本流程

首先分別用兩個用戶clone網(wǎng)絡中的項目锨匆,首先使用kh121用戶在項目中添加一些內(nèi)容,之后完成提交。

##從遠程工廠克隆p1項目
[root@localhost test]# git clone https://github.com/kh121/p1
Cloning into 'p1'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
[root@localhost test]# cd p1
##創(chuàng)建一個文件夾恐锣,添加一些文件
[root@localhost p1]# mkdir kh121
[root@localhost p1]# cd kh121
[root@localhost kh121]# echo a > a.txt
[root@localhost kh121]# cd ..
##提交版本
[root@localhost p1]# git add .
[root@localhost p1]# git commit -m "kh121 first commit"
[master 829fff8] kh121 first commit
 1 file changed, 1 insertion(+)
 create mode 100644 kh121/a.txt
 ##推送到服務器端
[root@localhost p1]# git push

此時查詢一下github上的信息茅主,發(fā)現(xiàn)已經(jīng)完成了一次提交

github協(xié)同開發(fā)基礎
github協(xié)同開發(fā)基礎

接著使用另外一個用戶ynkonghao進行一些修改之后提交,注意此時遠程的版本已經(jīng)修改土榴,而ynkonghao這個用戶的本地版本依然沒有獲取到遠程版本的信息诀姚。

E:/study/git_2016/11/p1>git push origin master
To github.com:kh121/p1
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:kh121/p1'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

提示提交失敗,因為遠程的版本和我們自己的版本不一樣玷禽,所以在提交之前需要進行pull操作赫段,先完成本地版本和遠程版本的同步。

E:\study\git_2016\11\p1>git pull ##同步遠程版本
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 0), reused 4 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), done.
From github.com:kh121/p1
   17de85d..829fff8  master     -> origin/master
Merge made by the 'recursive' strategy.
 kh121/a.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 kh121/a.txt

E:\study\git_2016\11\p1>git lg ##通過log可以發(fā)現(xiàn)會下載遠程版本矢赁,并且合并到自己的版本中糯笙,而且遠程的版本是有kh121提交的
*   60d9083 - (HEAD -> master) Merge branch 'master' of github.com:kh121/p1 (4 seconds ago) <ynkonghao>
|\
| * 829fff8 - (origin/master, origin/HEAD) kh121 first commit (23 hours ago) <Your Name>
* | fc0c200 - ynkonghao first commit (23 hours ago) <ynkonghao>
|/
* 17de85d - Initial commit (23 hours ago) <kh121>

執(zhí)行了git pull之后會從github上下載遠程的版本下來,之后和本地的分支進行合并撩银,接著再通過push就可以完成提交给涕。

E:\study\git_2016\11\p1>git push origin master
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 672 bytes | 0 bytes/s, done.
Total 7 (delta 0), reused 0 (delta 0)
To github.com:kh121/p1
   829fff8..60d9083  master -> master

此時另外一個用戶如果希望提交他的版本,同樣也需要進行pull操作额获,所以在實際的應用中够庙,我們每一次push操作都需要先進行pull,從遠程倉庫把數(shù)據(jù)拉取下來抄邀。這個操作其實和svn類似耘眨,在commit之前需要進行update。同樣也無法避免沖突問題撤摸。

遠程協(xié)作的沖突問題

原則上每個用戶都應該只負責自己的模板毅桃,這樣盡可能避免沖突,但在實際的開發(fā)中依然無法完全避免沖突准夷,接下來演示一下沖突的情況,首先讓兩個用戶的版本都同步

github協(xié)同開發(fā)基礎
github協(xié)同開發(fā)基礎

目前兩個用戶的版本完全一致莺掠,此時在kh121用戶中衫嵌,修改common文件夾中的文件內(nèi)容。

[root@localhost p1]# cd common
[root@localhost common]# ls
a.txt
[root@localhost common]# echo aaa >> a.txt ##添加一些內(nèi)容到a.txt中
[root@localhost common]# cd ..
[root@localhost p1]# git add .
[root@localhost p1]# git commit -m "common update by kh121"
[master b374a56] common update by kh121
 1 file changed, 1 insertion(+)
[root@localhost p1]# git push origin maste

此時讓ynkonghao的文件夾同樣也修改common中的a.txt彻秆,然后進行pull楔绞,這里故意讓a.txt的相同位置進行了修改,所以就會出現(xiàn)沖突

E:\study\git_2016\11\p1\common>echo aa >> a.txt
E:\study\git_2016\11\p1\common>more a.txt  ###在相同的位置進行了修改
a
aa

###完成了提交操作
E:\study\git_2016\11\p1\common>cd ..
E:\study\git_2016\11\p1>git add .
E:\study\git_2016\11\p1>git commit -m "update common by ynkonghao"
[master 46bde5f] update common by ynkonghao
 2 files changed, 2 insertions(+)
 create mode 100644 a.txt
 create mode 100644 common/a.txt

###進行了pull操作之后唇兑,發(fā)現(xiàn)了沖突
E:\study\git_2016\11\p1>git pull
Auto-merging common/a.txt
CONFLICT (add/add): Merge conflict in common/a.txt
Automatic merge failed; fix conflicts and then commit the result.
E:\study\git_2016\11\p1>cd common
###顯示了aa這兩個字符是在本地的header版本中編寫的酒朵,而aaa是在id為b374xx的版本中編寫的。
E:\study\git_2016\11\p1\common>more a.txt
a
<<<<<<< HEAD
aa
=======
aaa
>>>>>>> b374a565af1a1287394a2e079ae2e0708719e168

這種沖突問題就得由開發(fā)人員手動解決扎附,整個流程和svn基本類似蔫耽,如果僅僅只是按照上述的開發(fā)進行版本管理,在一個容易協(xié)調(diào)的團隊中是沒有問題的留夜,但是如果在互聯(lián)網(wǎng)中就會感覺版本稍微有些混亂匙铡,此時利用好分支模型就比較的重要图甜,下一部分將會詳細講解基于分支模型的開發(fā)。

這部分的內(nèi)容講解了如何進行協(xié)作開發(fā)鳖眼,并且分析了協(xié)作開發(fā)的流程黑毅,整個流程和svn類似,都是在push之前進行pull操作钦讳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矿瘦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子愿卒,更是在濱河造成了極大的恐慌匪凡,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掘猿,死亡現(xiàn)場離奇詭異病游,居然都是意外死亡,警方通過查閱死者的電腦和手機稠通,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門衬衬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人改橘,你說我怎么就攤上這事滋尉。” “怎么了飞主?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵狮惜,是天一觀的道長。 經(jīng)常有香客問我碌识,道長碾篡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任筏餐,我火速辦了婚禮开泽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘魁瞪。我一直安慰自己穆律,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布导俘。 她就那樣靜靜地躺著峦耘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旅薄。 梳的紋絲不亂的頭發(fā)上辅髓,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音,去河邊找鬼利朵。 笑死律想,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的绍弟。 我是一名探鬼主播技即,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼樟遣!你這毒婦竟也來了而叼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤豹悬,失蹤者是張志新(化名)和其女友劉穎葵陵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞻佛,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡脱篙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了伤柄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绊困。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖适刀,靈堂內(nèi)的尸體忽然破棺而出秤朗,到底是詐尸還是另有隱情,我是刑警寧澤笔喉,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布取视,位于F島的核電站,受9級特大地震影響常挚,放射性物質(zhì)發(fā)生泄漏作谭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一待侵、第九天 我趴在偏房一處隱蔽的房頂上張望丢早。 院中可真熱鬧,春花似錦秧倾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赡艰,卻和暖如春售淡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工揖闸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揍堕,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓汤纸,卻偏偏與公主長得像衩茸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贮泞,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git楞慈,從https:/...
    落魂灬閱讀 12,649評論 4 54
  • 文/菡萏蓮荷 雪做襯紙,天為襯布啃擦,一組枯枝囊蓝,躍入眼簾。 四季有輪回令蛉。心有春夏秋冬聚霜,便擁有了生命給予我們的本真與怡然...
    菡萏蓮荷閱讀 475評論 0 0
  • “江山風雨飄渺啊……唉……”一白發(fā)老者伴湖座亭而坐,神色憂愁珠叔,撫須長嘆蝎宇。 “阿爹,江山管它做甚?現(xiàn)在阿爹退隱江湖...
    蒼瀟閱讀 342評論 0 1
  • 格非江南三部曲閱讀完畢运杭。祝秀米夫啊、譚功達、譚端午三代人的命運變遷正是中國近現(xiàn)代史的濃縮寫照辆憔,心得如下:改革者最難...
    糖豆角閱讀 1,499評論 0 0
  • Unit Test What 什么是單元測試 Why 為什么要做單元測試 How 怎么做單元測試 What is ...
    Qingzh閱讀 518評論 0 1