本文開頭先特別聲明一下:因爲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添加到暫存區。
查看一下具體的分支狀況,在eclipse中操做結果以下圖所示。
選擇commit and push,提交更改到遠程倉庫
項目更新後結果以下
查看遠程版本庫,GitHub結果以下
"白貓黑貓,抓到老鼠就是好貓",顯然上述eclipse集成JGit可以幫助咱們快速完成任務。
不過必須指出,雖然使用eclipse集成JGit插件簡化Git的入門難度,能幫助用戶快速使用Git,可是對讀者自身提升---瞭解Git原理倒是不利的。
通過這節教程學習,或許看完的同窗仍是雲裏霧裏,不少概念尚未清晰的理解把握,我認爲這種狀況是正常的,慢慢地總結學習吧。