GitHub教程(三) 本地倉庫託管到GitHub

本文開頭先特別聲明一下:因爲GitHub教程屬於Git系列教程的GitHub子篇章,所以GitHub教程中將再也不詳細介紹Git操做命令及其用法,我會根據實際須要穿插着回顧Git操做命令。若是讀者須要學習或者回顧Git命令,能夠參考Git系列教程中的Git子篇章,固然也能夠參考廖雪峯Git教程,廖雪峯老師的Git教程講得仍是挺不錯的,通俗易懂。html

 

首先須要添加本地Git公鑰到GitHub帳戶下,這樣就可以將您的帳戶綁定到本身的GitHub帳戶,操做以下:git

到此爲止,您的本地Git已經和GitHub綁定。如何驗證是否綁定成功?github

ssh -T git@github.com

在本地git-bash中輸入上面指令後,若是出現的是相似下圖的狀況,說明已經綁定成功,能夠進入下一步操做啦。vim

Congratulation!bash

 

成功綁定github帳戶後,咱們須要在GitHub平臺上New repository。具體怎麼操做再也不重複敘述,能夠參看GitHub教程(一) 使用指南。結果相似以下:微信

而後咱們把GitHub上的這個遠程分支(origin master,master---版本庫主分支標記,origin---默認的遠程版本庫的名字[別名(alias),可修改]) clone 到本地目錄。微信公衆平臺

$ git clone git@github.com:帳戶名/項目名.git   // git協議的url路徑能夠在 Clone or download 選項中copy 

值得注意的是,git clone "url(protocol:git)"命令可以在任意目錄下使用,只要在該目錄下可以打開git-bash[應該都能打開,即任意目錄下都可用]。eclipse

如今進入到從遠程倉庫clone下來的本地Git倉庫,裏面有幾個文件,其中.git指的是本地版本庫(內部包括待命區[index]和版本庫[master])。ssh

在此目錄下,咱們使用 $ git log 命令查看提交歷史信息,具體狀況分析以下圖所示maven

Note:關於Git版本庫等內容,請參考系列教程Git系列教程(二) Git倉庫目錄結構,因爲文章篇幅問題,此處再也不展開討論。

到此爲止,您已經完成了一半任務---從GitHub上建立倉庫,並拷貝到本地。

Bravo!

 

有些東西如今不清楚它們具體的做用也沒有事,在使用過程當中您就會慢慢對這些東西有更加深刻的理解體會。一點一點克服不適應,才能成爲專家。記得有句話說的挺好的:正由於困難,才容易成功。部份內容我已經從命令行改爲了eclipse操做,這樣下降了入門Git的難度,也有利於讀者直觀的瞭解Git的狀況。

要經過Git傳本地倉庫到遠程倉庫,您的本地xxx/master必須得與相對遠程origin/master有差別。

問題  爲何本地Git倉庫和遠程Git倉庫之間必須有差別?

回答  這其實與Git的實現方式緊密相關。Git經過差別分析器(好比vimdiff)來比較兩個版本庫之間內容的差別,再提交差別的內容。同窗能夠想象一下,若是如今項目有100G的內容,可是差別只有1M,是否是就不須要將1G內容從新都傳一遍,而只要傳1M內容,速度的提升十分顯著。這就是爲何Git這麼流行的重要緣由之一。

這兒準備上傳到GitHub的項目是我幫朋友作的畢設項目---微信公衆平臺助手,固然項目自己不值一提,本科畢業設計的難度你懂的,就那個檔次水平。

您能夠暫時停一下,先把項目用maven搭建好咯,再繼續看。。。

至於具體怎麼構建maven project,這個問題不屬於本系列教程的範疇,您能夠參考其它資料(好比 Maven In Action,中文翻譯成 maven實戰)。

在此苦等若干分鐘

提問  爲何你選擇搭建maven project?

回答  這裏我要解釋一下。第一點,之前我也不用maven工程,可是到公司上班後才發現公司使用maven來構建工程,用完以後發現這玩意兒太爽了,媽媽不再用擔憂我jar包依賴問題了,pom.xml文件輕鬆搞定(其實也不輕鬆,不過相對之前那種純手工,來的仍是稍微方便點,純屬我的感受);第二點,貌似 github上面開源的項目都是基於maven構建的,能夠看出maven就是項目構建技術的一種重要趨勢(還有別的方法也在出來,能夠查查),緊跟時代潮流唄。 

跪着遞上一副原理圖,摘錄自Git基本原理詳解尊重版權,禮貌性地加個連接 】,主要是這種圖本身再畫一遍也相似,因此只是在原圖基礎上稍加改動。。。

如今咱們要作的是將現有的maven項目代碼copy到工做目錄中,工做目錄 (working tree) 正是咱們本地maven工程應有的藏身之所。CV大法。。。

使用CV大法後,結果就是這樣,固然這只是表面現象。

而後打開eclipse,將原來的maven工程刪除,再將此存在的maven工程import到eclipse中。Import Existing Maven Project後,具體結果以下。

若是開發者修改本地代碼,eclipse的git插件會在工程上出現">"小箭頭,表示工做目錄已修改,須要提交到暫存區。

因爲這裏只是單純的將maven工程copy到Git倉庫中,可是本地倉庫卻沒有對這個maven工程的任一文件有跟蹤監視(track)。不信的話咱們用嘗試着用命令看看唄,驗證一下我說的究竟是否正確。

好像就是這種狀況捏。那麼問題就來了[自古深情留不住,惟有套路得人心。哦耶!]

提問  何時文件會被跟蹤,爲何?

回答  這玩意其實仍是稍微有些複雜,我就挑「軟骨頭」啃啃。只有在工做目錄中的文件被歸入版本庫(至少是被add到版本庫的index區)時纔會被Git監控追蹤。緣由用通俗的話解釋起來很簡單:C語言的文件指針難道不須要賦地址值就可以操做文件嗎?顯然不可能。那這裏也是這個道理咯。

如今問題已經搞清楚了,那麼就對症下藥。

$ git add <file>  // 若是填 * 則表明將工做區中的全部文件都添加到暫存區 

eclipse集成JGit後則有相應的GUI界面簡化命令行操做。在工程中右鍵,Team → Add to Index,將工做目錄修改add添加到暫存區。

本地更改提交到 暫存區(index)後,git插件會提示一個"↑"小箭頭,表示暫存區中有代碼須要先commit到本地倉庫而後再push到遠程倉庫。
若是僅僅是commit到本地倉庫,這個小箭頭仍是會存在,必須push到遠程倉庫後纔會消失。

查看一下具體的分支狀況,在eclipse中操做結果以下圖所示。

選擇commit and push,提交更改到遠程倉庫

項目更新後結果以下

查看遠程版本庫,GitHub結果以下

"白貓黑貓,抓到老鼠就是好貓",顯然上述eclipse集成JGit可以幫助咱們快速完成任務。

不過必須指出,雖然使用eclipse集成JGit插件簡化Git的入門難度,能幫助用戶快速使用Git,可是對讀者自身提升---瞭解Git原理倒是不利的。

 

通過這節教程學習,或許看完的同窗仍是雲裏霧裏,不少概念尚未清晰的理解把握,我認爲這種狀況是正常的,慢慢地總結學習吧。

相關文章
相關標籤/搜索