1. 程式人生 > >GIT的基本操作命令與使用流程

GIT的基本操作命令與使用流程

一、Git的基本介紹   

        git是目前世界上最先進的分散式版本控制系統。gitLinusTorvalds 為了幫助管理Linux 核心開發而開發的一個開放原始碼的版本控制軟體。git擁有敏捷高效地處理任何或小或大的專案。所以現在絕大數開源專案都採用git管控,android原始碼也是通過git來管控的。因而瞭解一些git的基本知識是開發人員必備的技能。

二、Git的基本操作命令與設定

        


                                圖.Git的操作原理圖

(1) 使用者賬號的配置

    gitconfig --global user.name xxxx”                #

這個是配置賬戶名

    gitconfig --global user.email[email protected]”  #這個配置使用者郵箱

    --global表示在當前使用者下的全域性配置

    配置這個主要是用於提交資訊所用,以及程式碼拖拽以及提交的驗證。

(2) 設定commit_temp

   根目錄下新建一個.commit_temp檔案,

   然後在隱藏檔案中的.gitconfig

中新增

   [commit]

    template = /home/XXX/. commit_temp

(3) git的別名設定

    別名的意思就是給一個指令重新取個名字,git別名其實就是將一些指令簡化。

    例如

     git status .

    這個指令檢查當前檔案的狀態。

    Status這個單詞有時候我們寫起來感覺有點煩,就想給他簡化下,這時候我們就用到了別名。

別名的設定是這樣子的:gitconfig --global alias.st status

然後你進行gitst .

    gitst . git status . 效果是一樣的。在後面我們一般設定如下常用別名。

    (gitlg

    gitconfig --global alias.co checkout

    gitconfig --global alias.br branch

    gitconfig --global alias.ci commit

    所以說別名可以隨你愛好來設定你的指令,當然你也可以不設定。

(3)如何檢視git的配置資訊

    可能有人疑惑,剛才設定的別名以及賬戶配置,到底在哪裡看。這裡介紹兩種方式來檢視配置檔案。

    一是指令

    git config --list

    二是直接檢視配置檔案,在使用者根目錄,要能檢視隱藏資料夾。在根目錄開啟.gitconfig檔案。

1.   git status

    在提交之前,Git有一個暫存區(stagingarea),可以放入新新增的檔案或者加入新的改動

    列出和暫存區上不一樣的檔案,包括修改的和新增的檔案。

    如果只是想列舉出當前資料夾下面修改的檔案的話使用git status .

    在程式碼中做過修改後使用git status .

    修改的檔案:指你在這些檔案中做過修改 (在Changes not staged for commit 下面,前面有modifed: 紅色表示)

    刪除的檔案:指你把原有的檔案刪除了(在Changes not staged for commit 下面,前面有deleted: 紅色表示)

    新增的檔案:指原來的程式碼是沒有這些檔案的,是你新增的Untracked files下面,紅色表示)

2.  git diff

    此命令比較的是工作目錄中當前檔案和暫存區域快照之間的差異

    紅色部分是刪除部分,綠色的為新增部分

    我們需要在提交之前對每個檔案進行gitdiff一下檢查所有的修改是我們需要提交的修改嗎。

3.  git checkout

     git checkout 2個作用,一個是切換分支一個是替換本地改動

     git checkout filename

     此命令會使用HEAD中的最新內容替換掉你的工作目錄中的檔案.已新增到暫存區的改動以及新檔案都不會受到影響.

     注意:git checkout filename會刪除該檔案中所有沒有暫存和提交的改動,這個操作是不可逆的.

    一般是在你不想要這個檔案中的修改了可以使用這個命令來還原。

4. git clean –df或者rm -df

     git clean –df filename 或者rmdffilename

     此命令會是正對你自己新增的檔案,在還沒有新增到暫存區時使用這個命令可以刪除檔案,並不影響暫存區 

5. git add/rm

    此命令是新增需要修改的檔案到暫存區 

    git add filename 是新增filename檔案到暫存區。

    git add . 新增所有修改的檔案和新新增的檔案

    如果需要新增刪除檔案需要add後面新增引數選項-Agit add–A . 也可以使用gitrmfilename

    deleted: 表示你刪除的檔案

    new file: 表示新增的檔案

    modifed: 表示你對這個檔案進行了修改

6. git  reset HEAD /git reset --hard HEAD

    你git add.後,你發現有些檔案你不需要提交的。那麼此時就要回退add之前狀態。

    此時,你可以使用下面指令git reset HEAD xxxxxx代表某個要回退的檔案。HEAD代表git的最近一次提交。這個指令僅僅是將你要提交的檔案拿出來,不進行提交,而你的修改卻還在。如果你要徹底回退這個檔案,把你的修改給回退,gitreset --hard HEAD 加個--hard就會把你修改給回退所有檔案

7. git  commit

    執行git commit 後會彈出然後會出來一個提交模板(這個模板根據.commit_temp內容來的),寫上相關資訊。(也可以在.commit_temp中直接寫好

模板的操作。如果你要輸入/修改東西需要按,輸入完後需要ctrl+c  然後 shift +q,然後輸入wq回車

8. git reset --soft HEAD^

   當執行完git commit 後發現還要修改的時候可以執行這個命令來回退git commit 

9. repo upload .

    提交這次修改

10. git log

     我們知道檢視記錄通過git log.來檢視,但是我們檢視某個檔案的記錄,是這樣檢視的git log xxx

11. git show

    假如我要檢視某一次具體修改,通過git show xxx(這個xxxcommit id

當然了,可能我不想檢視具體修改,我就想知道本次修改的哪些檔案

就在git showxxx  HEAD --stat

12. git barnch /git checkout

    git barnch是檢視當前程式碼的分支,如果加上git barnch -a  那麼會在原來顯示當前分支的基礎上在把這部分程式碼所有的分支顯示出來

    git checkout (branchname)切換到一個分支.

    git checkout -b (branchname): 建立並切換到新的分支.

13. git stash –u

    假設我當前分支上有的修改,而現在我又要切換其他分支,做緊急的事。這時候有兩種方法,一個是在本地提交。另外一個是儲存現場。然後git stash -u 這個就把修改給儲存起來,你就可以毫不擔心的切換到其他分支上。等做完之後,切回來,如何恢復git stash list你可以檢視儲存的棧的情況,你可以將多個修改給儲存起來,通過git stash list來檢視,恢復用

    git stash apply [email protected]{0},如果你僅僅是恢復最上面的修改,可以簡化gitstash pop

14. git pull --rebase

    更新程式碼---在更新的時候需要注意本地有修改並且和伺服器修改的同一個地方的話會出現更新失敗的情況

三、Git使用流程

    提交的基本步驟

    1. git pull –rebase最好在你修改的程式碼前更新一下程式碼

    2.將修改的程式碼copywind目錄(提交目錄)

    3. git status    檢視修改的檔案是否是對的。(最好對每個檔案進行一下git diff一下檢視檔案內是否是你要提交的,也可以使用BeyondCompare 和一份你沒有修改的程式碼進行對比推薦)

    4. git add 

        (如果再之前你沒有git pull –rebase,那麼再這邊需要git pull –rebase一下,這樣會提前通知你是否衝突)

    5. git commit 然後會出來一個提交模板,寫上相關資訊儲存退出

    6. repo upload . 提交程式碼