1. 程式人生 > >Git 基本常用操作

Git 基本常用操作

一. Git基本的工作流程簡介如下:

  1. 在工作目錄中修改某些檔案;
  2. 對修改後的檔案進行快照,然後儲存到暫存區域;
  3. 提交更新,將儲存在暫存區域的檔案快照永久轉儲到 Git 目錄中.

二.git常用命令操作

1. git  clone

 git clone 程式碼庫的url

  eg: git clone ssh://[email protected]:29422/project

           git clone -b test ssh://[email protected]:29422/test.git 

          克隆到本地的庫,預設的程式碼庫的當前分支(活動分支)名稱是master,如果下載的時候,加上-b 分支名稱,下載下來的程式碼庫的當前分支(活動分支)就是指定的分支名稱: git clone –b branch1 ssh://

[email protected]:29422/test.git  克隆到本地的庫,預設的程式碼線是branch1 ,git clone 其他用法可以使用 git clone - -help檢視.

2.git  status

 可以使用git status檢視版本庫中檔案提交的狀態,沒提交的資訊會有顯示.

3.git  add   //將工作區的修改提交到暫存區

    1).  git add filename

    2). git add directoryname

    3). git add .  //其中.表示當前目錄下新新增的檔案或目錄,修改的檔案或目錄

4.git commit   //將暫存區的檔案或目錄提交到版本庫區

git commit 與 git commit –m “message”相同,只是後者直接以-m引數將提交日誌寫入

5.git commit - -amend

    1). 修正提交單中錯誤的使用者名稱及郵箱

  eg:git commit - -amend --author=’jon [email protected]

    2). 程式碼走查不通過的時候,在本地使用這個命令可以不產生新的程式碼走查單

     在本地修改完走查不通過的檔案,需要執行git commit的時候,不要使用git commit –m,而是使用git commit --amend命令(前提原生代碼庫中的.git/hooks/commit-msg 鉤子指令碼是存在的,如果鉤子指令碼不存在,要到gerrit web頁面的走查單中將changed-id xxxx貼到git commit --amend彈出的編輯框中)

6.git  rm //刪除檔案或目錄

     1). git rm  檔名稱

     2). git rm –r 目錄名稱

     3) .將不需要的檔案及目錄從工作區及暫存區中刪掉

         a.  如果需要刪除git庫中已經受控的檔案或目錄請使用此命令,不要使用作業系統下的刪除命令.受控-表示檔案及目錄狀態為跟蹤狀態

         b.  如果要刪除第一次放到工作區的檔案或目錄,直接使用作業系統下的刪除命令,也可以使用 git clean –df 移除不受控的檔案或目錄

         c.   git rm test.txt 將test.txt從工作區及暫存區刪除,如果需要提交,下一步直接執行git commit –m “message”即可

7.git  mv

  git mv oldname newname  //將檔案或者目錄重新命名

8.git  diff  //對比本地庫中工作區與暫存區的差異

      1). git  diff  --cached //對比本地庫中暫存區與庫區的差異

      2). git  diff head  //對比本地庫中工作區與庫區的差異

9.git  checkout

      1). git checkout -- filename 或者git checkout -- directory

      在本地git庫的工作區修改或刪除已受控的檔案,後悔了,想要會退到之前的狀態(工作區的檔案回到修改之前的狀態,暫存區,庫區不受影響)  

      2).git checkout branchname  //切換到某個分支

      3). git checkout –b branch1 commit-ID  //以某個提交修訂版本為基準建立新分支,並切換到新分支

10.git  reset  head //一般是在執行git add的之後,想取消add的動作(工作區不受影響,庫區不變,暫存區回到add之前的狀態)用

     1).git  reset  head  檔名稱

     2).git  reset  head 目錄名稱

11.git  pull  //更新本地庫

     1).git pull --rebase  //在本地庫的A分支下執行該命令,表示將遠端庫中對應的A分支內容更新到本地A分支,加入引數 --rebase 可以避免在更新過程中本地庫中產生合併節點

     2).git pull origin branchname  //將遠端倉庫的分支內容更新到本地庫的當前分支上

12.git  push  //將提交到本地庫中的內容推送到遠端庫中

   1).git push origin HEAD:refs/for/branchname  //推送到gerrit頁面走查

     2).git push origin branchname //直接推送到遠端git庫中

13.git log //輸出資訊顯示

     1).git  log -p //用於檢視每一次提交條目的補丁內容,這在程式碼複查時很管用,--表示本次提交版本之前檔案的修改狀態

     2).git  log --stat  //顯示被修改檔案的修改統計資訊,新增或刪除了多少行

     3). git log --pretty=format

    可以將提交歷史顯示成你想要的格式,這裡format的可選項包括:oneline,short,medium,full,fuller,email,raw

14.git log 可以指定程式碼提交者或者郵箱進行提交者程式碼日誌查詢

 eg:git log --author ="jon"

             git log --author="[email protected]"

15.git  branch

     1).git branch //在本地庫執行git branch 可以檢視本地庫的分支,並且可以檢視本地庫當前分支(通常用*標記)

     2).git branch –r  //在本地庫中檢視遠端庫的分支

     3).git branch  branname  commit-ID //以某個修訂版本建立新分支,commit-ID為40位的雜湊值

     4).git branch –d branchname //刪除分支,在刪除時會檢查要刪除的分支是否已經合併到其他分支,否則拒絕刪除

     5).git branch –D branchname // 強制刪除分支

     6).git branch –m branch1 branch2 //分支重新命名,如果庫中有同名的分支,則拒絕重新命名

     7).git branch –M branch1 branch2 //強制重新命名,不論庫中是否有同名的分支