Git--第3章--向遠(yuǎn)程倉庫(GitHub)提交代碼

???????前面兩章,我們已經(jīng)講述了Git的基本概念,以及在本地倉庫上的一些基本操作眼虱。本章我們將學(xué)習(xí)如何在遠(yuǎn)程倉庫上進(jìn)行操作,在GitHub上提交我們的第一行代碼席纽。

1. SSH

???????SSH? 納尼捏悬?沒錯,我第一次聽到這個名詞時润梯,也是嚇了一跳过牙。此SSH非彼SSH甥厦,下面聽我仔細(xì)說來。
  你擁有了一個 GitHub 賬號之后寇钉,就可以自由的 clone 或者下載其他項目刀疙,也可以創(chuàng)建自己的項目,但是你沒法提交代碼扫倡。仔細(xì)想想也知道谦秧,肯定不可能隨意就能提交代碼的,如果隨意可以提交代碼镊辕,那么 GitHub 上的項目豈不亂了套了油够,所以提交代碼之前一定是需要某種授權(quán)的,而 GitHub 上一般都是基于 SSH 授權(quán)的征懈。
  那么什么是 SSH 呢石咬? 簡單點說,SSH是一種網(wǎng)絡(luò)協(xié)議卖哎,用于計算機(jī)之間的加密登錄鬼悠。目前是每一臺 Linux 電腦的標(biāo)準(zhǔn)配置】髂龋總結(jié)一下就是:SSH(Secure Shell)是一種加密的網(wǎng)絡(luò)傳輸協(xié)議焕窝,常用于遠(yuǎn)程登陸與遠(yuǎn)程文件傳輸。使用SSH能有效避免數(shù)據(jù)在傳輸過程中被竊取篡改维贺。SSH可以采用密碼方式登陸遠(yuǎn)程它掂,也可以使用公鑰私鑰自動登陸。而大多數(shù) Git 服務(wù)器都會選擇使用 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客给, 否則請搜索自行安裝下。

71.png

  緊接著輸入 ssh-keygen -t rsa -C"郵箱"肢簿,什么意思呢靶剑?就是指定 rsa 算法生成密鑰。如果你出現(xiàn)下面的情況:
72.png

  哥們別急池充,你沒有看清我的命令桩引,注意:ssh-keygen -t rsa -C"郵箱"的ssh和-key之間是沒有空格的,要留心額收夸!
  接著連續(xù)四個回車鍵(有人說三個坑匠,反正我是四個;不需要輸入密碼)咱圆,然后就會生成兩個文件 id_rsa 和 id_rsa.pub 笛辟,而 id_rsa 是密鑰,id_rsa.pub 就是公鑰序苏。
73.png

這兩文件默認(rèn)分別在如下目錄里生成:
C:\Users\yucheng.HOME.ssh\id_rsa
C:\Users\yucheng.HOME.ssh\id_rsa.pub
當(dāng)然下面的是我的電腦手幢,你需要根據(jù)你的情況找:

74.png

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

3. GitHub 上添加 SSH key

第一步:登錄GitHub后,切換到setting頁面:


75.png

第二步:點擊最左側(cè) SSH and GPG keys :


76.png

第三步:點擊右上角的 New SSH key 按鈕:


77.png

79.png

第四步:打開 id_rsa.pub文件:
這里提醒下匈睁,怎么查看 id_rsa.pub 文件的內(nèi)容监透?
Linux/Mac 用戶執(zhí)行以下命令:
cd ~/.ssh
cat id_rsa.pub
Windows用戶,設(shè)置顯示隱藏文件航唆,可以使用 EditPlus 或者 Sublime 打開復(fù)制就行了胀蛮。


78.png

80.png

第五步:點擊Add SSH Key,會進(jìn)入下面界面:

81.png

第六步:確認(rèn)密碼(密碼即你GitHub賬戶的密碼)糯钙,確認(rèn)后會進(jìn)入下面界面:
82.png

第七步:命令窗口輸入 ssh -T git@github.com 進(jìn)行測試:
如果第一次進(jìn)行此操作會出現(xiàn)下面的提示粪狼,直接輸入yes:
84.png

若不是第一次操作,則會出現(xiàn)下面的界面任岸,那么恭喜你再榄,你已經(jīng)添加成功了。
83.png

4. Push & Pull

在提交代碼之前我們先要了解兩個命令享潜,也是上次的文章沒有介紹的困鸥,因為這兩個命令需要跟遠(yuǎn)程倉庫配合。
Push :直譯過來就是「推」的意思剑按,什么意思呢疾就?如果你本地代碼有更新了,那么就需要把
本地代碼推到遠(yuǎn)程倉庫吕座,這樣本地倉庫跟遠(yuǎn)程倉庫就可以保持同步了虐译。
代碼示例:
git push origin master
意思就是把本地代碼推到遠(yuǎn)程 master 分支。


Pull:直譯過來就是「拉」的意思吴趴,如果別人提交代碼到遠(yuǎn)程倉庫漆诽,這個時候你需要把遠(yuǎn)程倉庫的最新代碼拉下來,然后保證兩端代碼的同步锣枝。
代碼示例:
git pull origin master
意思就是把遠(yuǎn)程最新的代碼更新到本地厢拭。一般我們在 push 之前都會先 pull ,這樣不容易沖突撇叁。

5. 提交代碼

添加 SSH key 成功之后供鸠,我們就有權(quán)限向 GitHub 上我們自己的項目提交代碼了,而提交代碼有兩種方法:
第一種情況:Clone自己的項目
  我們本地的項目是從遠(yuǎn)程倉庫下載下來的陨闹,并時刻與其保持著同步更新楞捂,這樣二者之間的差異不是很大薄坏,適合用下面的方式提交代碼。
  Clone自己的項目 我們以我在 GitHub 上創(chuàng)建的 test 項目為例寨闹,執(zhí)行如下命令:
git clone git@github.com:stormzhang/test.git
那么如何獲取我們項目test在GitHub上的地址呢胶坠?

85.png
命令窗口如下:
86.png
在你的文件下可以查看到你Clone的項目文件:
87.png

  這樣就把 test 項目 clone 到了本地,你可以把 clone 命令理解為高級點的復(fù)制繁堡,這個時候該項目本身就已經(jīng)是一個git 倉庫了沈善,不需要執(zhí)行 git init 進(jìn)行初始化,而且甚至都已經(jīng)關(guān)聯(lián)好了遠(yuǎn)程倉庫椭蹄,我們只需要在這個 test 目錄下任意修改或者添加文件闻牡,然后進(jìn)行 commit ,之后就可以執(zhí)行:
git push origin master
或者
git push
如下圖所示:
89.png

進(jìn)行代碼提交绳矩,這種是最簡單方便的一種方式罩润。

第二種方式:關(guān)聯(lián)本地已有項目
  如果我們本地已經(jīng)有一個完整的 git 倉庫,并且已經(jīng)進(jìn)行了很多次 commit埋酬,這個時候第一種方法就不適合了哨啃。
  假設(shè)我們本地有個 test2 的項目,我們需要的是在 GitHub 上建一個 test3的項目写妥,然后把本地test2 上的所有代碼 commit 記錄提交到 GitHub 上的 test3 項目拳球。
第一步:就是在 GitHub 上建一個 test3 項目,這個想必大家都會了珍特,就不用多講了祝峻。

90.png

第二步:在本地倉庫創(chuàng)建一個test2項目(并且假設(shè)我們的這個test2項目已經(jīng)進(jìn)行了很多次的commit操作)
92.png

第三步:把本地 test2 項目與 GitHub 上的 test3 項目進(jìn)行關(guān)聯(lián),切換到 test2 目錄扎筒,執(zhí)行如下命令:
git remote add myorigin git@github.com:yucheng1994/test3.git
  什么意思呢莱找?就是添加一個遠(yuǎn)程倉庫,他的地址是git@github.com:yucheng1994/test3.git 嗜桌,而 origin 是給這個項目的遠(yuǎn)程倉庫起的名字奥溺,是的,名字你可以隨便取骨宠,只不過大家公認(rèn)的只有一個遠(yuǎn)程倉庫時名字就是 origin 浮定,為什么要給遠(yuǎn)程倉庫取名字?因為我們可能一個項目有多個遠(yuǎn)程倉庫层亿?比如 GitHub 一個桦卒,比如公司一個,這樣的話提交到不同的遠(yuǎn)程倉庫就需要指定不同的倉庫名字了匿又。
查看我們當(dāng)前項目有哪些遠(yuǎn)程倉庫可以執(zhí)行如下命令:
git remote -v
接下來方灾,我們本地的倉庫就可以向遠(yuǎn)程倉庫進(jìn)行代碼提交了:
git push myorigin master
就是默認(rèn)向 GitHub 上的 test3 目錄提交了代碼,而這個代碼是在 master 分支碌更。當(dāng)然你可以提交到指定的分支裕偿,這個之后的文章再詳細(xì)講解洞慎。

93.png
然而從上圖,我們可以發(fā)現(xiàn)嘿棘,會有問題拢蛋,會報錯!
那么到底是啥原因呢蔫巩?又該如何解決呢?
原因:遠(yuǎn)程倉庫中含有本地倉庫項目所沒有的README.md文件
解決方案:對項目進(jìn)行合并快压,輸入命令:git pull --rebase myorigin master
詳細(xì)操作請見Git--常見問題s--如何解決failed to push some refs to git

解決上述問題之后圆仔,我們就可以成功的將本地的項目提交到遠(yuǎn)程倉庫中了。


96.png
97.png

到這里你就成功的向遠(yuǎn)程倉庫提交了代碼蔫劣!你會了嗎

6.總結(jié)

???????通過本文的介紹坪郭,大家終于可以成功的向 GitHub 提交代碼了,但是相信大家還有很多疑問脉幢,比如關(guān)于分支的理解與使用歪沃,比如 git 的其他一些有用的配置,比如怎么向一些開源項目貢獻(xiàn)代碼嫌松,發(fā)起 Pull Request 等沪曙,之后的系列文章會逐一進(jìn)行介紹,敬請期待萎羔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末液走,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贾陷,更是在濱河造成了極大的恐慌缘眶,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件髓废,死亡現(xiàn)場離奇詭異巷懈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)慌洪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門顶燕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒋譬,你說我怎么就攤上這事割岛。” “怎么了犯助?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵癣漆,是天一觀的道長。 經(jīng)常有香客問我剂买,道長惠爽,這世上最難降的妖魔是什么癌蓖? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮婚肆,結(jié)果婚禮上租副,老公的妹妹穿的比我還像新娘。我一直安慰自己较性,他們只是感情好用僧,可當(dāng)我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赞咙,像睡著了一般责循。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上攀操,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天院仿,我揣著相機(jī)與錄音,去河邊找鬼速和。 笑死歹垫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的颠放。 我是一名探鬼主播排惨,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碰凶!你這毒婦竟也來了若贮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤痒留,失蹤者是張志新(化名)和其女友劉穎谴麦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伸头,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡匾效,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了恤磷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片面哼。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扫步,靈堂內(nèi)的尸體忽然破棺而出魔策,到底是詐尸還是另有隱情,我是刑警寧澤河胎,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布闯袒,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏政敢。R本人自食惡果不足惜其徙,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喷户。 院中可真熱鬧唾那,春花似錦、人聲如沸褪尝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽河哑。三九已至昌罩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灾馒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工遣总, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留睬罗,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓旭斥,卻偏偏與公主長得像容达,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子垂券,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,937評論 2 361

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

  • Git常用語法 [TOC] Git簡介 描述 ? Git(讀音為/g?t/花盐。)是一個開源的分布式版本控制系統(tǒng),...
    君惜丶閱讀 3,537評論 0 13
  • 長時間在外面菇爪,突然要回家算芯,小彤很高興。如期而歸凳宙,興高采烈的帶著男朋友回家熙揍,相處已久,似乎結(jié)婚氏涩,執(zhí)子之手届囚,與子偕...
    4e57b8f24a48閱讀 134評論 0 1
  • 無工作任務(wù)的一個早上,對比起前兩天的各種報表真是幸福感滿滿的是尖,但是意系,還有一個但是存在,昨晚開會通知的到今天...
    清歡lj閱讀 365評論 0 1
  • 文 | 雨霏 近來在控制體重,但是因為有“餓了容易低血糖”的潛意識,所以作郭,每次一感覺到餓就開始吃陨囊,因此體重控制的效...
    做好自己做最好的自己閱讀 310評論 0 0
  • 彩票又中獎了?中獎率90%,哈哈哈夹攒!好開心??感恩宇宙哥哥如此愛你蜘醋,開通彩票這條財富管道,耶咏尝!謝謝压语!謝謝!謝謝编检! ...
    楚帥閱讀 185評論 0 2