從0開始學(xué)習(xí) GitHub 系列之「向GitHub 提交代碼」

從0開始學(xué)習(xí) GitHub 系列之「向GitHub 提交代碼」


讀完本文大概需要 5 分鐘戴尸。

之前的這篇文章「從0開始學(xué)習(xí) GitHub 系列之「Git速成」」相信大家都已經(jīng)對(duì) Git 的基本操作熟悉了,但是這篇文章只介紹了對(duì)本地 Git 倉(cāng)庫(kù)的基本操作,今天我就來介紹下如何跟遠(yuǎn)程倉(cāng)庫(kù)一起協(xié)作,教你們向 GitHub 上提交你們的第一行代碼距帅!

1

SSH

你擁有了一個(gè) GitHub 賬號(hào)之后李请,就可以自由的 clone 或者下載其他項(xiàng)目,也可以創(chuàng)建自己的項(xiàng)目侠碧,但是你沒法提交代碼。仔細(xì)想想也知道缠黍,肯定不可能隨意就能提交代碼的弄兜,如果隨意可以提交代碼,那么 GitHub 上的項(xiàng)目豈不亂了套了瓷式,所以提交代碼之前一定是需要某種授權(quán)的替饿,而 GitHub 上一般都是基于 SSH 授權(quán)的。

那么什么是 SSH 呢贸典?

簡(jiǎn)單點(diǎn)說视卢,SSH是一種網(wǎng)絡(luò)協(xié)議,用于計(jì)算機(jī)之間的加密登錄廊驼。目前是每一臺(tái) Linux 電腦的標(biāo)準(zhǔn)配置据过。而大多數(shù) Git 服務(wù)器都會(huì)選擇使用 SSH 公鑰來進(jìn)行授權(quán)颊埃,所以想要在 GitHub 提交代碼的第一步就是要先添加 SSH key 配置。

2

生成SSH key

Linux 與 Mac 都是默認(rèn)安裝了 SSH 蝶俱,而 Windows 系統(tǒng)安裝了 Git Bash 應(yīng)該也是帶了 SSH 的班利。大家可以在終端(win下在 Git Bash 里)輸入ssh如果出現(xiàn)以下提示證明你本機(jī)已經(jīng)安裝 SSH, 否則請(qǐng)搜索自行安裝下榨呆。

緊接著輸入ssh-keygen -t rsa罗标,什么意思呢?就是指定 rsa 算法生成密鑰积蜻,接著連續(xù)三個(gè)回車鍵(不需要輸入密碼)闯割,然后就會(huì)生成兩個(gè)文件?id_rsa 和 id_rsa.pub ,而 id_rsa 是密鑰竿拆,id_rsa.pub 就是公鑰宙拉。這兩文件默認(rèn)分別在如下目錄里生成:

Linux/Mac 系統(tǒng) 在~/.ssh下,win系統(tǒng)在/c/Documents and Settings/username/.ssh下丙笋,都是隱藏文件谢澈,相信你們有辦法查看的。

接下來要做的是把 id_rsa.pub 的內(nèi)容添加到 GitHub 上御板,這樣你本地的 id_rsa 密鑰跟 GitHub 上的 id_rsa.pub 公鑰進(jìn)行配對(duì)锥忿,授權(quán)成功才可以提交代碼。

3

GitHub 上添加 SSH key

第一步先在 GitHub 上的設(shè)置頁(yè)面怠肋,點(diǎn)擊最左側(cè)SSH and GPG keys

然后點(diǎn)擊右上角的New SSH key按鈕:

需要做的只是在Key那欄把 id_rsa.pub 公鑰文件里的內(nèi)容復(fù)制粘貼進(jìn)去就可以了(上述示例為了安全粘貼的公鑰是無效的)敬鬓,Title那欄不需要填寫,點(diǎn)擊Add SSH key按鈕就ok了笙各。

這里提醒下钉答,怎么查看 id_rsa.pub 文件的內(nèi)容?

Linux/Mac 用戶執(zhí)行以下命令:

cd ~/.ssh

cat id_rsa.pub

Windows用戶杈抢,設(shè)置顯示隱藏文件数尿,可以使用 EditPlus 或者 Sublime 打開復(fù)制就行了。

SSH key 添加成功之后春感,輸入ssh -T git@github.com進(jìn)行測(cè)試砌创,如果出現(xiàn)以下提示證明添加成功了虏缸。

4

Push & Pull

在提交代碼之前我們先要了解兩個(gè)命令鲫懒,也是上次的文章沒有介紹的,因?yàn)檫@兩個(gè)命令需要跟遠(yuǎn)程倉(cāng)庫(kù)配合刽辙。

Push:直譯過來就是「推」的意思窥岩,什么意思呢?如果你本地代碼有更新了宰缤,那么就需要把本地代碼推到遠(yuǎn)程倉(cāng)庫(kù)颂翼,這樣本地倉(cāng)庫(kù)跟遠(yuǎn)程倉(cāng)庫(kù)就可以保持同步了晃洒。

代碼示例:git push origin master

意思就是把本地代碼推到遠(yuǎn)程 master 分支。

Pull:直譯過來就是「拉」的意思朦乏,如果別人提交代碼到遠(yuǎn)程倉(cāng)庫(kù)球及,這個(gè)時(shí)候你需要把遠(yuǎn)程倉(cāng)庫(kù)的最新代碼拉下來,然后保證兩端代碼的同步呻疹。

代碼示例:git pull origin master

意思就是把遠(yuǎn)程最新的代碼更新到本地吃引。一般我們?cè)?push 之前都會(huì)先 pull ,這樣不容易沖突刽锤。

5

提交代碼

添加 SSH key 成功之后镊尺,我們就有權(quán)限向 GitHub 上我們自己的項(xiàng)目提交代碼了,而提交代碼有兩種方法:

Clone自己的項(xiàng)目

我們以我在 GitHub 上創(chuàng)建的 test 項(xiàng)目為例并思,執(zhí)行如下命令:

git clone?git@github.com:stormzhang/test.git

這樣就把 test 項(xiàng)目 clone 到了本地庐氮,你可以把 clone 命令理解為高級(jí)點(diǎn)的復(fù)制,這個(gè)時(shí)候該項(xiàng)目本身就已經(jīng)是一個(gè)git 倉(cāng)庫(kù)了宋彼,不需要執(zhí)行 git init 進(jìn)行初始化弄砍,而且甚至都已經(jīng)關(guān)聯(lián)好了遠(yuǎn)程倉(cāng)庫(kù),我們只需要在這個(gè) test 目錄下任意修改或者添加文件输涕,然后進(jìn)行 commit 输枯,之后就可以執(zhí)行:

git push origin master

進(jìn)行代碼提交,這種是最簡(jiǎn)單方便的一種方式占贫。

至于怎么獲取項(xiàng)目的倉(cāng)庫(kù)地址呢桃熄?如下圖:

關(guān)聯(lián)本地已有項(xiàng)目

如果我們本地已經(jīng)有一個(gè)完整的 git 倉(cāng)庫(kù),并且已經(jīng)進(jìn)行了很多次 commit 型奥,這個(gè)時(shí)候第一種方法就不適合了瞳收。

假設(shè)我們本地有個(gè) test2 的項(xiàng)目,我們需要的是在 GitHub 上建一個(gè) test 的項(xiàng)目厢汹,然后把本地 test2 上的所有代碼 commit 記錄提交到 GitHub 上的 test 項(xiàng)目螟深。

第一步就是在 GitHub 上建一個(gè) test 項(xiàng)目,這個(gè)想必大家都會(huì)了烫葬,就不用多講了界弧。

第二步把本地 test2 項(xiàng)目與 GitHub 上的 test 項(xiàng)目進(jìn)行關(guān)聯(lián),切換到 test2 目錄搭综,執(zhí)行如下命令:

git remote add origingit@github.com:stormzhang/test.git

什么意思呢垢箕?就是添加一個(gè)遠(yuǎn)程倉(cāng)庫(kù),他的地址是git@github.com:stormzhang/test.git 兑巾,而 origin 是給這個(gè)項(xiàng)目的遠(yuǎn)程倉(cāng)庫(kù)起的名字条获,是的,名字你可以隨便取蒋歌,只不過大家公認(rèn)的只有一個(gè)遠(yuǎn)程倉(cāng)庫(kù)時(shí)名字就是 origin 帅掘,為什么要給遠(yuǎn)程倉(cāng)庫(kù)取名字委煤?因?yàn)槲覀兛赡芤粋€(gè)項(xiàng)目有多個(gè)遠(yuǎn)程倉(cāng)庫(kù)?比如 GitHub 一個(gè)修档,比如公司一個(gè)碧绞,這樣的話提交到不同的遠(yuǎn)程倉(cāng)庫(kù)就需要指定不同的倉(cāng)庫(kù)名字了。

查看我們當(dāng)前項(xiàng)目有哪些遠(yuǎn)程倉(cāng)庫(kù)可以執(zhí)行如下命令:

git remote -v

接下來吱窝,我們本地的倉(cāng)庫(kù)就可以向遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行代碼提交了:

git push origin master

就是默認(rèn)向 GitHub 上的 test 目錄提交了代碼头遭,而這個(gè)代碼是在 master 分支。當(dāng)然你可以提交到指定的分支癣诱,這個(gè)之后的文章再詳細(xì)講解计维。

對(duì)了,友情提醒撕予,在提交代碼之前先要設(shè)置下自己的用戶名與郵箱鲫惶,這些信息會(huì)出現(xiàn)在所有的 commit 記錄里,執(zhí)行以下代碼就可以設(shè)置:

git config —global user.name "stormzhang"

git config —global user.email "stormzhang.dev@gmail.com"

6

總結(jié)

通過本文的介紹实抡,終于大家可以成功的向 GitHub 提交代碼了欠母,但是相信大家還有很多疑問,比如關(guān)于分支的理解與使用吆寨,比如 git 的其他一些有用的配置赏淌,比如怎么向一些開源項(xiàng)目貢獻(xiàn)代碼,發(fā)起 Pull Request 等啄清,之后的系列文章會(huì)逐一進(jìn)行介紹六水,敬請(qǐng)期待。

PS:昨天的文章「如何在一群程序員中識(shí)別Android開發(fā)辣卒?」掷贾,是我寫這么多文章以來第一次沒有一個(gè)反對(duì)意見的,回復(fù)全是清一色的「有理有據(jù)荣茫,深度好文」想帅,還有表示「看了我的文章后特意去照了下鏡子,突然發(fā)現(xiàn)說的太他媽對(duì)了」啡莉,還有說「終于找到了為什么一開始就選中 Android 的原因了」港准,我只能說,低調(diào)低調(diào)咧欣!

PS:以前你們生日的時(shí)候都在我文章底下評(píng)論求祝福浅缸,我給你們祝福過,號(hào)召點(diǎn)贊過该押,甚至還給有些人發(fā)過紅包疗杉,其實(shí)我想說,28年前的今天蚕礼,一位偉大的程序員誕生了烟具,因?yàn)樘焐L(zhǎng)得帥,所以命中注定選擇了 Android 開發(fā)奠蹬,今天終于輪到我生日了朝聋,還特意給你們準(zhǔn)備了一篇干貨,你們看著辦吧囤躁,贊賞冀痕、點(diǎn)擊廣告、轉(zhuǎn)發(fā)砸向我吧狸演!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末言蛇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宵距,更是在濱河造成了極大的恐慌腊尚,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件满哪,死亡現(xiàn)場(chǎng)離奇詭異婿斥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)哨鸭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門民宿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人像鸡,你說我怎么就攤上這事活鹰。” “怎么了只估?”我有些...
    開封第一講書人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵华望,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我仅乓,道長(zhǎng)赖舟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任夸楣,我火速辦了婚禮宾抓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘豫喧。我一直安慰自己石洗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開白布紧显。 她就那樣靜靜地躺著讲衫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涉兽,一...
    開封第一講書人閱讀 52,793評(píng)論 1 314
  • 那天招驴,我揣著相機(jī)與錄音,去河邊找鬼枷畏。 笑死别厘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拥诡。 我是一名探鬼主播触趴,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼渴肉!你這毒婦竟也來了冗懦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤仇祭,失蹤者是張志新(化名)和其女友劉穎披蕉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體前塔,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚣艇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了华弓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片食零。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖寂屏,靈堂內(nèi)的尸體忽然破棺而出贰谣,到底是詐尸還是另有隱情,我是刑警寧澤迁霎,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布吱抚,位于F島的核電站,受9級(jí)特大地震影響考廉,放射性物質(zhì)發(fā)生泄漏秘豹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一昌粤、第九天 我趴在偏房一處隱蔽的房頂上張望既绕。 院中可真熱鬧,春花似錦涮坐、人聲如沸凄贩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疲扎。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間椒丧,已是汗流浹背壹甥。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓜挽,地道東北人盹廷。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓征绸,卻偏偏與公主長(zhǎng)得像久橙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子管怠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361

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