Git從入門到速成

什麼是Git

Git是Linux發明者Linus開發的一款新時代的版本控制系統,那什麼是版本控制系統呢?怎麼理解?網上一大堆詳細的介紹,可是大多枯燥乏味,對於新手也很難理解,這裏我只舉幾個例子。git

熟悉編程的都知道,咱們在軟件開發中源代碼實際上是最重要的,那麼對源代碼的管理變得異常重要:編程

  • 爲了防止代碼的丟失,確定本地機器與遠程服務器都要存放一份,並且還須要有一套機制讓本地能夠跟遠程同步;
  • 咱們開發的時候免不了有bug,有時候剛發佈的功能就出現了嚴重的bug,這個時候須要對代碼進行還原;
  • 隨着咱們版本迭代的功能愈來愈多,可是咱們須要清除的知道歷史每個版本的代碼更改記錄,甚至知道每一個人歷史提交代碼的狀況

等等相似以上的狀況,這些都是版本控制系統能解決的問題。因此說,版本控制是一種記錄一個或者若干個文件內容變換,以便未來查閱特定版本修改狀況的系統,對於軟件開發領域來講版本控制是最重要的一個環節,而Git是當下比較流行、好用的版本控制系統。緩存

Git安裝

上面說了,Git是一個版本控制系統,你也能夠理解成一個工具,跟Java相似,使用以前必須得先安裝,因此第一步必需要安裝,因爲我用的是Mac,Mac上系統自帶Git。因此安裝這一步驟就省略,相信你們能夠搞的定。服務器

如何學習Git

安裝好Git以後,怎麼學習是個問題,其實關於Git有不少圖形化的軟件,可是我強烈建議你們從命令行開始學習理解,我知道沒有接觸過命令行的同窗心裏多是拒絕的,可是個人親身實踐證實,只有一開始學習命令行,以後你對Git的每一步操做才能理解其意義,而等你熟練以後 ,你想用任何的圖形化的軟件去操做徹底沒有問題。工具

Git命令列表

怎麼判斷你Git有沒有安裝成功呢?請在命令行裏輸入git,若是出現如下提示證實你已經安裝成功了。學習

如圖

Git全部的操做命令都是以git開頭,上面列舉了最經常使用的一些Git命令,緊接着會有一句引文解釋這個命令的意思,都不是很難理解的單詞,不妨試着看一下,不過沒有實際操做你仍然很差理解,下面咱們來以一個實際的操做來介紹下一些經常使用的命令的含義。測試

Git具體命令

第一步:咱們先新建一個文件夾,在文件夾裏新建一個文件(ps:我是用命令行去新建的)命令行

  • 新建文件夾:mkdir test版本控制

  • 跳轉到文件夾目錄:cd testcode

  • 新建test.md文件: touch test.md

提醒:在進行任何Git操做以前,都要先切換到Git倉庫目錄,也就是要先切換到項目的文件夾目錄下

這個時候咱們先隨便操做一個命令,好比git status,能夠看到以下提示:
如圖

意思就是當前目錄還不是一個Git倉庫。

git init

這個時候用到了第一個命令,表明初始化git倉庫,輸入git init以後會提示:
如圖

能夠看到初始化成功了,至此test目錄已是一個git倉庫了。

git status

緊接着咱們輸入git status命令,會有以下提示:
如圖

默認就直接在master分支,關於分支的概念後面會提,這時最主要的是提示test.md這個文件
Untracked files就是說test.md這個文件尚未被跟蹤,尚未提交在git倉庫裏呢,並且提示你能夠用git add去操做你想要提交的文件。

git status這個命令就是查看狀態,這個命令能夠算是使用最頻繁的了,建議你們沒事就輸入這個命令來查看你當前git倉庫的一些狀態。

git add

上面提示test.md文件尚未提交到git倉庫裏,這個時候咱們能夠隨便編輯下test.md文件,而後輸入git add test.md,而後再輸入git status
如圖

此時提示如下文件 Changes to be committed,意思就是test.md文件等待被提交,固然你也可使用 git rm -cached這個命令去移除這個緩存。

git commit

接着,咱們輸入 git commit -m "first commit",這個命令是什麼意思呢?commit是提交的意思,-m 表明提交信息,執行了以上命令表明咱們已經正式進行了第一次提交。這個時候再輸入 git status ,會提示 nothing to commit
圖6

git log

這個時候,咱們輸入 git log命令,就會看到以下:
圖7

git log這個命令能夠查看全部commit產生的記錄,因此能夠看到已經產生了一條commit記錄,而提交時候的附帶信息叫 「first commit」

git add & git commit

看到這裏估計不少人都會有疑問,我想要提交直接進行commit不就好了麼爲何須要先add一次呢?首先 git add 是把改動添加到一個暫存區,你能夠理解成一個緩存區域,臨時保存你的改動,而 git commit 纔是最後真正的提交,固然也有辦法把這兩步合併成一步,不事後面再介紹,建議新手先循序漸進的一步步來。

git branch

branch即分支的意思,分支的概念很重要,尤爲是團隊協做的時候,假設兩我的都作同一個項目,這個時候分支就是保證兩人能協同合做的最大力氣了。

舉個🌰:A、B兩人都在作同一個項目,可是不一樣的模塊,這個時候A新建了一個分支叫a,B新建了一個分支叫b,這樣A、B作的全部代碼改動都在各自的分支,互不影響,等到兩人都把各自的模塊都作完了,最後再統一把分支合併起來。

執行 git init初始化git倉庫以後會默認生成一個主分支master,也是你所在的默認分支,也基本是實際開發正式環境下的分支,通常狀況下master分支不會輕易直接在上面操做的,大家能夠輸入git branch查看下當前分支狀況;若是咱們想在此基礎上新建一個分支呢,很簡單,執行 git branch a就新建了一個名字叫a的分支,這時候分支a跟分支master是如出一轍的內容,咱們再輸入git branch 查看當前的分支狀況;

可是能夠看到master分支前有個 * 號,(注意: * 所指的分支表明當前所在的分支) 即雖然新建了一個 a 的分支,可是當前所在的分支仍是在master上,若是咱們想在 a 分支上進行開發,首先要先切換到 a 分支上才行,因此下一步要切換分支。git checkout a
執行這個命令,而後再輸入git branch查看分支狀況,能夠看到當前咱們所在的分支已是a了,這個時候,A同窗就能夠在他新建的a分支進行寫代碼了。
那就有人說了,我要先新建再切換,未免有點麻煩,有沒有一步到位的,答案是確定的:
git checkout -b a這個命令表明的意思就是新建一個a分支,而且自動切換到a分支

git merge

A同窗在a分支上代碼寫完了,而且測試也OK了,準備要上線了,這個時候就須要把他的代碼合併到分支master上,而後發佈。git merge就是合併分支用到的命令,這對這個狀況,須要先作兩步:

  • 第一步是切換到master分支,若是你已經在那就不用切換了
  • 第二步執行git merge a,意思就是把 a 分支的代碼合併過來,不出意外,這個時候 a 分支的代碼就順利合併到master分支來了,爲何說不出意外呢?由於這個時候可能由於產生衝突而致使合併失敗。

git branch -d

有新建分支,那確定就有刪除分支,加入這個分支新建錯了,或者a分支的代碼已經順利合併到master分支來了,那麼a分支沒用了,須要刪除,這個時候執行代碼 git branch -d a
就能夠把a分支刪除了。

git branch -D

有些時候可能會刪除失敗,好比若是a分支的代碼尚未合併到master分支,你執行 git branch -d a是刪除不了的,它會智能的提示你a分支還有未合併的代碼,可是若是你非要刪除,那就執行 git branch -D a就能夠強制刪除a分支了。

git tag

咱們在客戶端開發的時候常常有版本的概念,好比v1.0、v1.1之類的,不一樣的版本確定對應不一樣的代碼,因此咱們通常要給咱們的代碼加上標籤,這樣假設v1.1版本出了一個新bug,可是又不知道v1.0是否是有這個bug,有了標籤就能夠順利切換到v1.0的代碼,從新打個包測試就知道了。
因此若是想要新建一個標籤很簡單,好比 git tag v1.0就表明我在當前代碼狀態下新建了一個v1.0的標籤,輸入 git tag能夠查看歷史tag記錄。

想要切換到某個tag怎麼辦?
也很簡單,執行 git checkout v1.0這樣就順利的切換到v1.0 tag的代碼狀態了。

結束語

OK,以上全是一些最基本的git操做,並且全是在本地環境進行操做的,徹底沒有涉及到遠程倉庫。畢竟這篇文章是針對小白的,大神能夠忽略。

附上一張git操做的圖
圖8

相關文章
相關標籤/搜索