Git使用教程與基本原理和Sourcetree基本使用探微

  1. 什麼是GIT

Git是一個強調速度的分佈式版本控制軟件和源代碼管理系統(SCM,source code management)。Git最初是由Linus Torvalds爲內核開發而設計的管理軟件。自從Git推出以來,已經被不少開源項目所採納。每個Git工做目錄是一個帶有徹底歷史記錄和版本信息的倉庫,不依賴於網絡和中央服務器。Git是一個免費的開源軟件,聽從GNU v2協議。html

Git這個詞在英語中的原意是很笨拙,沒用的人。Linus自嘲說:「我是一個任性的笨蛋,因此我把個人全部的項目的名字都和我很類似。第一個是Linux,如今是Git。」Git的幫助文檔中描述Git爲:笨拙的內容跟蹤者(the stupid content tracker)。(翻譯自WIKI)git

關於開發Git的一些歷史由來,能夠看看這個網站:https://lkml.org/lkml/2005/4/6/121github

   2.爲何要用GITubuntu

  • 更順暢的工做流程,開發過程當中,徹底能夠離線操做
  • 快速,Git分佈式架構使得本地倉庫包含全部的歷史版本信息,你能夠在不一樣的版本之間快速切換
  • 彈性的本地分支,在svn下,你建一個分支須要把源代碼複製到另一個文件夾,而在Git下,建立分支的代價是很是小的,只需一條命令
  • 倉庫目錄結構簡潔,用Git複製一個項目,只會在項目根目錄建立一個.git的目錄,而其餘目錄很乾淨
  • 內容按元數據方式存儲,全部的版本信息都位於.git目錄下
  • 完整性好,更易於協做開發
  • 用戶羣大,如今已經有成千上萬個開源項目採用Git來作項目管理,github上更是有無數個代碼倉庫
  三、GIT安裝與配置

  • 在 Mac 上安裝

    在 Mac 上安裝 Git 有多種方式。 最簡單的方法是安裝 Xcode Command Line Tools。 Mavericks (10.9) 或更高版本的系統中,在 Terminal 裏嘗試首次運行 git 命令便可。 若是沒有安裝過命令行開發者工具,將會提示你安裝。vim

    若是你想安裝更新的版本,可使用二進制安裝程序。 官方維護的 OSX Git 安裝程序能夠在 Git 官方網站下載,網址爲 http://git-scm.com/download/macwindows


  • .在Linux上安裝
若是你的系統是Linux或者Fedora,你能夠經過如下命令直接安裝Git:

yum install git-core (fedora)安全

apt-get install git-core (ubuntu)bash

  • .在Windows上安裝

儘管Git是發源於Linux,但如今Windows上也有可以正常使用Git,只不過不支持中文,在Windows下全部的中文都顯示問號,另外還有一些功能上的BUG。因此建議仍是在Linux上去使用Git,若是你不得不工做在Windows上,你能夠到http://msysgit.github.com/上下載msysgit的最新版,安裝過程和其餘Windows程序差很少,基本上點下一步就OK了。Msysgit默認會安裝git bash和git GUI這兩個程序,通常用git bash就能夠了,它支持經常使用的命令。若是對Linux命令行不熟,你也能夠用用git GUI,但功能有限制。服務器

b) 第一次使用GIT網絡

在你安裝好Git以後,你須要修改一些配置,才能正常使用Git。

Git經過「git config」命令來配置Git,這個命令有2個選項:--system, --global, 加上默認選項,分別對應Git上3級配置文件。第一個是/etc/gitconfig文件,和--system對應,這是全局配置文件,修改這個文件,將會影響系統上全部的用戶,全部的倉庫。第二個是你家目錄下的/.gitconfig文件,與--global對應,修改它會對你當前用戶的全部倉庫產生影響。第三個是你倉庫中的.git/.gitconfig文件,這是「git config」默認修改的配置文件,它只會對你當前倉庫產生影響。

在第一次使用Git時,你須要告訴你的協同開發者,你是誰以及你的郵箱,在你提交的時候,Git須要這兩個信息。具體經過如下命令設置:

git config --global user.name 「Test OSS」

git config --global user.email [email protected]

固然你也能夠不用--global選項,但這意味這你在每個倉庫中都要這樣設置。

同時,你也能夠指定你的編輯器,你的Diff工具:

git config --global core.editor vim

git config --global merge.tool vimdiff

你還能夠經過」git config --list」命令來查看你的設置。

當你把Git設置好以後,若是你要和從Git服務器上得到倉庫,或者向Git服務器提交你的代碼(好比github),你可能須要生成你本身的ssh密鑰對。Git支持4種與服務器端通訊的協議:git、http、ssh和https。其中git只是一個只讀協議,也就是說你只能夠從服務器端獲取倉庫,可是你不能提交你本身的代碼。而http和https用的不多,大部分都只支持ssh協議和Git協議。

當你經過ssh協議與遠端服務器進行通訊的時候,你能夠經過如下命令生成ssh密鑰對:

ssh-keygen -t rsa

若是你沒有指定密鑰名稱和存放路徑的話,它默認把兩個不對稱密鑰放在你的家目錄下的.ssh目錄下,密鑰文件默認名稱爲id_rsa和id_rsa.pub,前者是私鑰,後者是公鑰。中間可能會要你設定訪問密鑰密碼,這個能夠設,能夠不設,但爲了安全考慮,仍是建議你設一個訪問密碼。不然,意味着任何持有你密鑰的人均可以使用該密鑰。

而後把你的公鑰發給Git倉庫管理員,而後你就能夠經過ssh協議來訪問服務器端,期間程序會自動進行密鑰對匹配,若是你設了訪問密碼,你可能須要輸入密碼。

更多關於ssh的內容,請訪問這裏:http://www.freebsd.org/doc/zh_CN/books/handbook/openssh.html

這些設定完以後,你能夠經過得到任何一個公開的代碼倉庫來檢測你的git是否工做正常。好比下面這個:

git clone git://git2.kernel.org/pub/scm/git/git.git

四、GIT倉庫

Git作爲一個資源管理和跟蹤系統,若是想要把本身的文件託管在Git上,那麼首先你得讓Git知道你須要管理的文件在哪。好比說如今我有一個項目,它在test文件夾裏,我想讓Git管理這個項目,這個時候你需進入到這個目錄,而後運行「git init」命令。這個時候Git就會在該目錄下生成一個.git的隱藏目錄,Git用來進行版本控制和內容跟蹤的全部文件都在該文件夾下。

處於git跟蹤下的文件只具備三種狀態:

  • Modified(working directory):被修改過的文件
  • Staged(staging area):經過git add添加到暫存區域的文件
  • Committed(git directory):經過git commit提交到倉庫的文件

因此,通常的git工做流程多是這樣:修改過某些文件,而後把這些文件添加都暫緩區,再提交到倉庫中造成一個版本或快照,最後提交到git服務器上。而在中間,可能伴隨着分支管理,分支切換,撤消與合併。

可能有些人會以爲很奇怪,爲何git會有暫存區域這個概念,直接提交到倉庫中不就ok了。其實這是git爲了作版本控制用的,試想若是沒有暫存區域,每修改一個文件,就會造成一個版本,太過頻繁,不易於管理。暫存區域其實就是下一個版本的文件清單,你能夠自由控制該往倉庫中提交什麼文件,這也能夠避免在一個版本中包含一些中間文件,好比編譯後的文件。




更多git 進階( http://www.125135.com/1057214.htm )

命令行比較高冷,仍是來一個圖形界面

GUI for git|SourceTree|入門基礎

  1. SourceTree簡介
  2. SourceTree基本使用
  3. SourceTree&Git部分名詞解釋
  4. 相關鏈接推薦

1、SourceTree簡介

  SourceTree 是 Windows 和Mac OS X 下免費的 Git 和 Hg 客戶端,擁有可視化界面,容易上手操做。同時它也是Mercurial和Subversion版本控制系統工具。支持建立、提交、clone、push、pull 和merge等操做。

2、SourceTree基本使用

(如下以SourceTree For Mac V2.0.5.2中文版爲例,託管平臺以Github爲例)

  1. 基本安裝
    1.1. 不建議在appstore直接搜索下載SourceTree,由於appstore裏的版本已經十分老舊(好像是2012年更新的)。建議前往官網下載安裝最新版,我這裏也提供一個SourceTree for Mac V2.0.5.2的百度雲的方便連接。 傳送門→SourceTreeDownload
    1.2. 拖動安裝,Launchpad中打開,continue,輸入github帳號按下一步完成便可。沒有Github帳號的朋友,也能夠跳過本步驟完成安裝

  2. 註冊GitHub(已有Github帳號的朋友請跳過本步驟)
    2.1. 打開Github官網 傳送門→Github
    2.2. 填寫必要的信息,點擊sigh up for github

  1. 2.3. 默認選中免費帳號,點擊綠色的Finish sign up便可


  2. 實踐入門-建立倉庫 clone&pull
    3.1. 建立倉庫
    用咱們剛纔建立的帳號登錄github,在歡迎頁點擊「+ New repository「建立咱們的倉庫


    Create Repository 1

    或點擊右上角的「+」,而後再New repository亦可

    Create Repository 2

    3.2. 按照我的須要填寫倉庫名、倉庫描述等,建議勾選「Initialize this repository with a README」(注意此處免費帳戶只能選擇創建public(開源)倉庫),填寫完成後點擊Create repository

    3.3. 至此,咱們的倉庫已經建立成功。建立成功後,咱們在頁面的右下角找到連接,點擊複製

    Copy Link

    3.4. 打開咱們的SourceTree,點擊:「+新倉庫」,選擇:「從URL克隆」

    Clone 1

    3.5. 粘貼咱們的倉庫連接至源URL,SourceTree會自動幫咱們生成目標路徑(本地倉庫路徑)以及名稱,點擊克隆

    Clone 2

    3.6. 等待數秒後,SourceTree會爲咱們自動打開咱們剛纔克隆的倉庫,選擇master選項,這裏咱們能夠看到咱們倉庫裏的全部文件

    MainPage

    3.7. 接下來咱們想要上傳一個項目至咱們的遠程Github倉庫內。咱們點擊右上角「在Finder」中顯示。而後SourceTree會幫咱們打開咱們的本地倉庫,咱們將須要上傳的項目複製到本地的Finder文件夾內,而後關閉文件夾,回到主頁面。咱們會發現工做副本出現了更改提示

    Change Notification

    3.8. 咱們點擊工做副本,而後咱們發現咱們剛纔上傳的文件都在未暫存文件當中,此時,咱們勾選「未暫存文件」

    工做副本 1

    3.9. 發現咱們的文件變成了已暫存文件。此時,咱們能夠輸入更新信息,而後,點擊提交按鈕

    工做副本 2

    3.10. 咱們切換回master分支,會發現master分支以及推送(Push)按鈕,都出現了更改提示。這表示SourceTree已經將咱們剛纔添加的文件成功提交到本地倉庫,而本地倉庫的內容則比遠程倉庫超前了一個版本。咱們這個時候點擊推送(Push)便可將本地倉庫的內容同步至遠程倉庫。

    Branch Master

    3.11. 點擊推送(push),等待片刻便可,咱們從新登陸github網站,會發現咱們剛纔本地倉庫的文件已經成功推送到遠程倉庫

    Push
  3. 實踐入門-參與開源 Fork&pull request
    (如下以 [https://github.com/octocat/Spoon-Knife] 舉例)
    4.1. 首先打開上述頁面,而後點擊右上角「fork」按鈕。fork意味着將他人的倉庫複製到咱們帳號中。若是咱們想要參與開源項目,首先要fork下別人的項目,而後在咱們複製過來的倉庫中,對別人的代碼作修改。


    fork

    4.2. fork完以後,咱們用上文提到的方法,將本身帳號中的[Spoon-Knife]倉庫克隆(clone)到本機SourceTree中,並在稍做更改後,推送(push)到本身帳號的遠程倉庫
     4.2.1 在SourceTree中創建新倉庫,並複製URL

    clone Spoon-Knife

     4.2.2 在本地倉庫中稍做更改(如圖我新建了一個Test)

    Example

     4.2.3 經過上文方法推送(Push),登錄Github,進入Spoon-Knife倉庫,發現test已經上傳到咱們帳號的遠程倉庫Spoon-Knife當中

    Success

    4.3. 上傳完後,咱們點擊Github branch旁的綠色按鈕

    Pull Request 1

    4.4. 以後咱們會進入一個Compare頁面,這個頁面用於比較做者倉庫與咱們倉庫的文件的不一樣。Base fork:指的是做者倉庫目錄地址;Head fork:指的是咱們帳號中fork後所產生的倉庫地址。咱們點擊Create pull request便可

    Compare

    4.5. 而後咱們會進入一個Pull Request界面,在這裏,咱們能夠輸入本身更改的緣由/更改的內容。這裏寫的文字會顯示給源代碼做者,若是做者接受了咱們的推送請求(pull request)後,咱們的代碼將會上傳到源代碼做者的倉庫內,成功爲開源作貢獻。若是做者拒絕了咱們的推送請求(pull request)後,咱們的代碼將不會上傳到源代碼做者的倉庫內。

    Pull Request 2

    4.6. 咱們點擊Create Pull Request便可,系統將自動跳轉到等待回覆的頁面,這裏會顯示做者是否接受咱們的代碼更改。

    Pull Request 3

    3、SourceTree&Git部分名詞解釋

    1. 克隆(clone):從遠程倉庫URL加載建立一個與遠程倉庫同樣的本地倉庫
    2. 提交(commit):將暫存文件上傳到本地倉庫(咱們在Finder中對本地倉庫作修改後通常都得先提交一次,再推送)
    3. 檢出(checkout):切換不一樣分支
    4. 添加(add):添加文件到暫存區
    5. 移除(remove):移除文件至暫存區
    6. 暫存(git stash):保存工做現場
    7. 重置(reset):回到最近添加(add)/提交(commit)狀態
    8. 合併(merge):將多個同名文件合併爲一個文件,該文件包含多個同名文件的全部內容,相同內容抵消
    9. 抓取(fetch):從遠程倉庫獲取信息並同步至本地倉庫
    10. 拉取(pull):從遠程倉庫獲取信息並同步至本地倉庫,而且自動執行合併(merge)操做,即 pull=fetch+merge
    11. 推送(push):將本地倉庫同步至遠程倉庫,通常推送(push)前先拉取(pull)一次,確保一致
    12. 分支(branch):建立/修改/刪除分枝
    13. 標籤(tag):給項目增添標籤
    14. 工做流(Git Flow):團隊工做時,每一個人建立屬於本身的分枝(branch),肯定無誤後提交到master分枝
    15. 終端(terminal):能夠輸入git命令行
    16. 這裏只對SourceTree作一下大致講解。

4、相關連接推薦

  1. →Github help for mac https://mac.github.com/help.html
  2. →Github help for win https://windows.github.com/help.html
  3. 由淺到深學git  http://backlogtool.com/git-guide/tw/intro/intro1_1.html
  4. http://www.jianshu.com/p/be9f0484af9d (鳴謝)  

上文均爲我的拙見,歡迎你們討論交流

相關文章
相關標籤/搜索