Git大法好——4.Github作為遠程倉庫的使用詳解

Git大法好——4.Github作為遠程倉庫的使用詳解

標簽: Git


引言

首先我們先來回顧一下之前的三節(jié)我們都學(xué)了些什么:
第一節(jié):Git的引入以及關(guān)于Git的一些概念赞厕,讓我們對Git有了一個基本的認識偷办;
第二節(jié):Git的本地操作指令詳解韭畸,熟悉了一波Git本地操作的指令;
第三節(jié):Git的分支操作鬼悠,包括分支的創(chuàng)建,切換江滨,處理沖突,合并厌均;
假如學(xué)完前面三節(jié)唬滑,大家后面又自己擼了幾次指令,相信應(yīng)該就有信手拈來的感覺了棺弊!
第一節(jié)中我們說Git由:工作空間晶密,暫存區(qū),本地倉庫和遠程倉庫這四個部分組成模她,
前三個部分我們都有涉獵稻艰,所以本節(jié)講解的是遠程倉庫部分的內(nèi)容!
其實遠程倉庫也沒你想象的那么復(fù)雜缝驳,可以理解成只是把本地倉庫丟到了某個
服務(wù)器上连锯,然后別人把你的倉庫clone(克隆)或者說拷貝下來而已归苍!又或者說是
多人協(xié)作時用狱,各個人本地倉庫更改整合的一個媒介而已!

說回這個遠程倉庫拼弃,你可以自己搞臺服務(wù)器夏伊,然后自己搭建,也可以將項目托管
到代碼托管網(wǎng)站吻氧,比如Github溺忧,GitCafe咏连,Git@OSCGitLab鲁森,coding.net等祟滴。
選哪個其實都差不多,都是用來托管代碼的而已歌溉,下面簡單介紹下這幾個吧:

  • Github:是最大的代碼托管網(wǎng)站垄懂,大部分的開發(fā)者都喜歡使用這個,但是開源項
    目不收費痛垛,而私有項目是要交"保護費"的草慧,而且Github服務(wù)器畢竟在國外,國內(nèi)訪
    問可能會有些緩慢匙头!
  • GitCafe:同樣私有倉庫收保護費漫谷,開源倉庫免費,但是相比起github有點坑蹂析,而且
    是不時會掛掉舔示,不是很推薦...
  • Git@OSC:開源中國社區(qū)的,倉庫免費电抚,不過協(xié)作功能還沒有完全體現(xiàn)斩郎。
  • GitLab:開源的版本管理系統(tǒng),可以安裝Gitlab CE源碼喻频,自己搭服務(wù)器缩宜;也可以使
    用GitLab EE企業(yè)版,GitLab可以配合著其他IM工作使用甥温,比如我司用的瀑布IM锻煌,當有人
    推送更新的時候收到推送信息等!
  • coding.net:國內(nèi)體驗最接近Github的產(chǎn)品姻蚓,有免費版和開發(fā)版宋梧,高級版,內(nèi)容可
    自行到官網(wǎng)查看狰挡。

好的捂龄,最后我們還是選擇GitHub作為我們的遠程倉庫,原因就不多說了加叁。


1.Github賬號注冊與創(chuàng)建新倉庫

注冊Github賬號

  • 打開注冊鏈接:https://github.com/join
  • 依次填寫注冊相關(guān)信息:用戶呢稱倦沧,郵箱,密碼它匕,填寫完畢后點擊Create an account
  • 打開注冊郵箱展融,打開收到的驗證郵件,點擊完成賬號驗證
  • 點擊右上角的"Sign in"輸入你剛注冊的注冊郵箱和密碼豫柬,登陸Github告希。

創(chuàng)建新倉庫

  • 點擊右上角扑浸,創(chuàng)建一個新倉庫
  • 接著依次填寫:Repository name(倉庫名稱),Description(描述信息燕偶,可寫可不寫)喝噪,
    選擇Public倉庫,勾選Initialize this repository with a README指么,自動創(chuàng)建一個README.md
    文件仙逻,點擊Create repository創(chuàng)建一個倉庫。

2.把本地倉庫推送到新倉庫

這里我們在Android Studio創(chuàng)建一個新的項目涧尿,然后來到項目所在的位置系奉,右鍵git bash
鍵入:git init將這個項目變成帶有g(shù)it倉庫的項目姑廉,這里我們拷貝下Github那里我們這個
倉庫的地址:

缺亮,然后鍵入下述指令:

git remote add origin https://github.com/coder-pig/SimpleTea.git

指定完遠程主機后,我們可以直接鍵入git remote來查看桥言,或者加上-v:

接著我們鍵入下述命令把我們的倉庫push到github上萌踱,這里的-u參數(shù)作為第一次提交使用,
作用是把本地master分支和遠程master分支關(guān)聯(lián)起來(設(shè)置默認遠程主機)号阿,后續(xù)提交不需要這
個參數(shù)并鸵!

git push -u origin master

這時候打開我們的GitHub就可以看到我們的項目已經(jīng)成功push上來了!

這里我們是通過git remote來設(shè)置遠程倉庫地址的扔涧,假如你想修改遠程倉庫地址园担,
比如你把倉庫托管換成了Git@OSC,你需要修改遠程地址枯夜,可以鍵入:

git remote set-url origin xxxx

來修改遠程地址弯汰,你也可以先刪除origin然后再添加:

git remote rm origin
git remote add origin https://github.com/coder-pig/SimpleTea.git

還可以直接修改.git文件夾里的config文件,直接替換圈住位置:

另外湖雹,這個origin不是什么固定的東西咏闪,這個只是我們后面那個倉庫地址的一個別名!Kだ簟鸽嫂!
你可以寫成其他的東西,比如我的項目既托管在Github又托管在Git@OSC征讲,我可這樣設(shè)置:

git remote add github https://github.com/coder-pig/SimpleTea.git
git remote add osc git@git.oschina.net:coder-pig/SimpleTea.git

這一點要弄清楚>菽场!稳诚!


3.為項目添加SSH Key免去提交輸入賬號密碼的麻煩

不知道細心的你有沒有發(fā)現(xiàn)哗脖,倉庫地址除了Https外,還有一個SSH扳还,這里我們簡單介紹下
兩者的區(qū)別才避,第一點:使用Https url可以任意克隆Github上的項目;而是用SSH url
克隆的話氨距,你必須是項目的擁有者或管理員桑逝,而且還要添加SSH Key,否則會無法克隆俏让。
還有一點是楞遏,Https每次push都需要輸入用戶名和密碼,而使用SSH則不需要輸入用戶名
如果配置SSH Key時設(shè)置了密碼首昔,則需要輸入密碼寡喝,否則直接git push就可以了!

另外勒奇,SSH预鬓,Secure shell(安全外殼協(xié)議),專為遠程登陸會話與其他網(wǎng)絡(luò)服務(wù)提供安全性
的協(xié)議赊颠, 而SSH傳輸?shù)臄?shù)據(jù)是可以經(jīng)過壓縮的格二,可以加快傳輸?shù)乃俣龋鲇诎踩耘c速度竣蹦,
我們優(yōu)先考慮使用SSH協(xié)議顶猜,而SSH的安全驗證規(guī)則又分為基于密碼基于密鑰兩種!
我們這里用的是基于第二種的痘括,即在本地創(chuàng)建一對密鑰长窄,公鑰(id_rsa.pub)私鑰(id_rsa),
然后把公鑰的內(nèi)容貼到Github賬號的ssh keys中,這樣就建立了本地和遠程的認證關(guān)系纲菌,
當我們再push到遠程倉庫抄淑,會將你本地的公共密鑰與服務(wù)器的進行匹配,如果一致驗證通過
直接推送更新驰后!

下面我們來建立ssh key肆资,首先來到電腦的根目錄下,這里假定我們沒創(chuàng)建過SSH key:

執(zhí)行完ssh-keygen那個指令后灶芝,后面依次要你輸入文件名郑原,直接回車會生成兩個默認的
秘鑰文件,接著提示輸入密碼夜涕,直接回車犯犁,如果這里你輸入密碼了的話,那么push的時
候你還是需要輸入密碼女器,接著又輸多一次密碼酸役,同樣回車,然后出現(xiàn)最下面的這串東西
就說明ssh key已經(jīng)創(chuàng)建成功了!

我們接著可以用編輯器打開id_rsa.pub文件或者鍵入:

clip <id_rsa.pub

復(fù)制文件內(nèi)容涣澡,然后打開Github贱呐,點擊你的頭像,選擇:Settings入桂,然后點擊左側(cè)SSH Keys,
然后New SSH Key

然后Github會給你發(fā)來一個提示創(chuàng)建了一個新ssh key的郵件奄薇,無視就好,接下來我們可以
鍵入:ssh -T 779878443@qq.com抗愁,后面的是你的注冊郵箱馁蒂,然后如果你上面設(shè)置過
密碼則需要輸入密碼,否則直接輸入yes然后一直按回車就好蜘腌!沫屡,最后出現(xiàn)Hi xxx那句話
就說明ssh key配置成功了!

內(nèi)容參考:https://help.github.com/articles/generating-an-ssh-key/


4..gitignore文件的編寫

我們在Push項目的時候撮珠,可能會有一些無關(guān)的東西沮脖,不需要傳到遠程倉庫,我們可
以在項目目錄下新增一個.gitignore文件劫瞳,然后寫上不想提交的目錄倘潜,支持通配符,
比如筆者常用的android studio中的.gitignore的文件內(nèi)容:

*.DS_Store


# Gradle files
build/
.gradle/
*/build/


# IDEA
*.iml
.idea/.name
.idea/encodings.xml
.idea/inspectionProfiles/Project_Default.xml
.idea/inspectionProfiles/profiles_settings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/vcs.xml
.idea/workspace.xml
.idea/libraries


# Built application files
*.apk
*.ap_


# Files for the Dalvik VM
*.dex


# Java class files
*.class


# Generated files
antLauncher/bin
antLauncher/gen


# Local configuration file (sdk path, etc)
local.properties


# Log Files
*.log

你可以根據(jù)自己的需求來編寫志于,另外提供一個github上的一個.gitignore的模板的庫涮因,
要什么項目的可以來這里直接找:https://github.com/github/gitignore


5.同步遠程服務(wù)器更新(fetch VS pull)

現(xiàn)在我們知道可以remote設(shè)置遠程倉庫地址伺绽,push推送更新到遠程服務(wù)器养泡,clone克隆遠程
倉庫,接著就到本地倉庫同步遠程倉庫了奈应,關(guān)于獲取遠程服務(wù)器更新的方式有兩種澜掩,他們
分別是fetchpull,盡管都可以獲取遠程服務(wù)器更新杖挣,但是兩者卻又是不一樣的肩榕。
首先說下fetch吧,僅僅只是從遠處服務(wù)器獲取到最新版本到本地惩妇,假如你不去合并(merge)
的話株汉,本地工作空間是不會發(fā)生變化的!這里我們在Github上創(chuàng)建一個README.md文件

而是用pull確是一步到位的歌殃,或者說:pull = fetch + merge乔妈!這里我們
先改下Github上README.md的內(nèi)容!

好的氓皱,區(qū)別很顯而易見路召,實際使用中勃刨,使用git fetch顯得更安全一點,至少在merge
之前我們可以查看更新情況股淡,再決定是否進行合并身隐;而筆者實際開發(fā)中用pull
用得較多,主要是懶揣非,哈哈抡医,至于用哪個躲因,見仁見智吧早敬!


6.Github客戶端介紹

其實,安裝好Git后大脉,就一有一個Git Gui的東東了搞监,就可以直接用有用戶界面的
Git來做版本管理的工作了,而Github客戶端則是Github給我們提供的一個專門用來
管理Github項目的一個工具而已镰矿。比如琐驴,假如你裝了Github客戶端,在Clone項目
的時候秤标,你只需點擊:

就能直接把項目clone下來绝淡,就是一些Git操作的圖形化罷了,首先來到下面的鏈接
下載Github客戶端:https://desktop.github.com/
文件很小苍姜,后面點擊運行文件后牢酵,他還要在線下載安裝,100多m衙猪,然后傻瓜式安裝馍乙,
安裝完成后,會自動打開Github客戶端垫释,然后使用你的Github賬號登陸丝格,接著他會
默認為你創(chuàng)建SSH Key信息,接著的你自己摸索了棵譬!

這里另外補充一點显蝌,就是win 8.1裝Github客戶端的問題,昨晚安裝的時候一直
報這個錯誤:

直接订咸,win + x曼尊,選擇"命令行提示符(管理員)",執(zhí)行以下下面的這個指令:

%SYSTEMROOT%\SYSTEM32\REGSVR32.EXE %SYSTEMROOT%\SYSTEM32\WUAUENG.DLL

然后再點擊Github的安裝程序算谈,等待安裝完成即可涩禀,下載并不需梯子。


7.如何刪除Github上的倉庫

點擊進入你的倉庫然眼,點擊Setting艾船,拉到最后:

點擊Delete this repository

彈出的對話框中輸入要刪除的倉庫名稱,接著點擊刪除


8.如何為開源項目貢獻代碼

你可以Clone別人的開源項目,在看別人代碼的時候屿岂,你覺得作者有某些地方寫得不好践宴,
寫錯,或者你有更好的想法爷怀,你在本地修改后阻肩,想把修改push推送到開源項目上,
想法很好运授,但是你不是項目的擁有著和參與者烤惊,是無法推送更改的!S蹼柒室!這樣是為了
避免熊孩子,畢竟熊孩子無處不在逗宜,參與開源項目的方法有兩種:

第一種方法
是讓作者把你加為寫作者雄右,添加協(xié)作者流程:點擊倉庫的Settings
-->Collaborators然后輸入想添加的人的用戶名或者郵箱,點擊添加即可纺讲。

第二種方法
點擊Fork按鈕擂仍,把這個項目fork到自己的賬號下,然后Clone到本地熬甚,然后
做你想做的修改逢渔,commit提交,然后push到自己賬號里的倉庫则涯,然后打開開源
項目复局,點擊

,然后新建一個pull request粟判,接著設(shè)置自己的倉庫為
倉庫
亿昏,設(shè)置源分支目標倉庫目標分支档礁,然后還有pull request的標題和
描述信息角钩,填寫完畢后,確定呻澜,這個時候開源項目的作者就會收到一個pull
request的請求递礼,由他來進行審核,作者審查完代碼覺得沒問題的話羹幸,他可以
點擊一下merge按鈕即可將這個pull request合并到自己的項目中脊髓,假如作者
發(fā)現(xiàn)了你代碼中還有些bug,他可以通過Pull Request跟你說明栅受,要修復(fù)了
xxBUG才允許合并将硝,那么你再修改下BUG恭朗,提交,更改后的提交會進入Pull
Request依疼,然后作者再審核這樣痰腮!

PS:假如作者不關(guān)閉或者merge你的這個Pull Request,你可以一直commit
騷擾主項目...( ╯□╰ )


9.刪除服務(wù)器上的無用分支

直接鍵入:

git push origin :無用分支名

10.一些補充

限于篇幅和水平顯示律罢,關(guān)于Github的介紹還有些遺漏膀值,比如頁面介紹或其他東東,
這里貼下一些相關(guān)的文章误辑,可以看看沧踏,后續(xù)看到不錯的文章會補上:

另外稀余,再安利一個練習(xí)Git命令行很棒的一個開源項目:githug
通過闖關(guān)的形式讓你熟悉Git命令的使用悦冀,總共有55個關(guān)卡趋翻,不過只能夠在linux
系統(tǒng)上玩睛琳,因為安裝游戲的指令就是:gem install github,關(guān)于通關(guān)攻略
網(wǎng)上有很多踏烙,這里貼下之前在簡書上看到的一個:「Githug」Git 游戲通關(guān)流程


小結(jié)

本節(jié)給大家講解了Github作為遠程倉庫的可能會遇到的問題师骗,但還是記住:
遠程倉庫只是作為我們交換各自本地倉庫的一個媒介罷了讨惩,我們可以換成其他
的倉庫辟癌,換湯不換藥,我們更應(yīng)該關(guān)注的是本地倉庫的操作以及多人協(xié)作時的工作流
程荐捻,下節(jié)我們通過簡單的例子來闡述Git多人協(xié)作開發(fā)的流程黍少,敬請期待!

——作者:coder-pig处面,本教程不收取任何費用厂置,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處魂角,尊重作者
勞動成果昵济,請勿用于商業(yè)用途,侵權(quán)必究野揪!

最后編輯于
?著作權(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)自己被綠了。 大學(xué)時的朋友給我發(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)容