git經常使用命令清單

本文經過學習廖雪峯老師的git教程整理而成,文章幾處引用教程中的圖,侵刪,老師的git教程連接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000git

概念簡單介紹

在A目錄使用git進行版本管理,A目錄即爲工做區,咱們在工做區上面操做文件(建立、修改、刪除等等),A目錄下的隱藏目錄.git是版本庫,.git目錄下主要有暫存區(stage)和當前分支(默認的git會自動建立master分支,不指定時當前分支指向master)兩部分,以下圖
git經常使用命令清單github

經常使用操做

  • 在指定目錄下建立版本庫:
    cd <DIR>
    git init
  • 建立一個新目錄,並建立版本庫:
    git init <DIR>
  • 將文件添加至版本庫:
    git add <FILE>       //將文件修改添加到暫存區中;
    git commit -m 'MESSAGE'   //將stage中的全部修改提交到當前分支上;
  • 查看目錄文件狀態是否與版本庫一致:
    git status
  • 查看目錄文件與版本庫中的不一樣點:
    git diff <FILE>
  • 查看提交日誌(可用於版本回滾):
    git log

    git經常使用命令清單

  • 回滾至某個版本:
    git reset <commit_id>

    (回滾至A版本後,再次git log時無法查到A版本以後的版本的commit id,此時若是想回到A版本以後的版本B時,可以使用git reflog查看B版本的commitid)app

  • 撤銷工做區的修改:
    git checkout -- <FILE>

    結果說明:
      當FILE修改後未add到暫存區時,此時撤銷結果會將回到跟版本庫中的狀態。
      當FILE已經add到暫存區後,又對FILE進行修改,此時撤銷結果會回到跟暫存區同樣的狀態。
      總結:先查看暫存區中是否有FILE,有則將暫存區中的FILE狀態同步到工做區,不然將當前版本的FILE狀態同步到工做區ide

  • 撤銷暫存區中的修改:
    git reset HEAD <FILE>

    結果說明:
      暫存區中沒有FILE的修改,工做區FILE仍是保持修改狀態的。學習

  • 刪除文件三步驟:
    rm <FILE>                 //刪除工做區中的FILE
    git rm <FILE>             //刪除版本庫中的FILE
    git commit -m 'MESSAGE'   //提交修改

    (誤刪時,只需git checkout -- <FILE>便可恢復文件)this

    遠程管理

    將本地git倉庫推送同步到遠程倉庫指針

    1. 在github上建立一個新倉庫(此時爲空的)
    2. 將遠程庫和本地庫關聯起來
      git remote add origin git@github.com:lzs666/gittest.git

         (origin:遠程庫的名稱,git@github.com:lzs666/gittest.git:在github上建立的新倉庫的地址)日誌

    3. 本地庫的全部內容推送到遠程庫上
      git push -u origin master

        (會將本地庫的master分支內容推送到遠程庫的master分支上,-u參數會將本地的master分支與遠程庫的master分支關聯起來,以後再push就不須要添加這個參數了)
      推送本地分支內容同步到遠程code

      git push origin <name>      //將本地指定<name>分支同步到遠程庫的<name>分支

      抓取分支
      使用git clone時,本地默認只能看到master分支,若想在dev上開發,必須手動抓取origin的dev分支到本地。blog

      git checkout -b dev origin/dev

      以後開發完push到origin的dev分支上:

      git push origin dev

      若此時push時,若發現已經有其餘人push過了且與你推送的內容有衝突,會致使推送失敗,解決以下:

    4. 指定本地dev分支與遠程origin/dev分支的連接
      git branch --set-upstream-to=origin/dev dev
    5. 將最新的origin/dev抓取下來,此時工做區內容會變成origin/dev的狀態
      git pull
    6. 修改後commit,再push

      分支管理

  • 建立一個分支:
    git branch dev
  • 切換到指定分支(切換後,會將工做區同步到dev分支的狀態):
    git checkout dev
  • 建立dev分支並切換到dev分支上(至關於上面兩個步驟):
    git checkout -b dev
  • 查看當前所在分支:
    git branch    //會列出全部分支,當前分支面前會有一個*號
  • 合併指定分支到當前分支:
    git merge dev

    說明:
    git merge dev執行時,只是將當前head指針移動到dev所在的位置,以下圖
    git經常使用命令清單
    此時若是將dev分支刪除,以後git log沒法查看分支歷史,因此合併時可以使用--no-ff參數修改合併模式,在merge時不是簡單移動指針,而是生成一個commit至內容與dev一致。這種方式merge後即可經過git log查看分支合併歷史。

    git merge --no-ff -m 'COMMIT_MESSAGE' dev

    此時的merge過程以下圖,其中結點1和結點2的內容是同樣的。
    git經常使用命令清單

  • 刪除指定分支(當前分支不能是dev):
    git branch -d dev
  • 刪除一個沒有被合併過的分支

    git branch -D <name>

    標籤管理

    標籤做用:對應一個commitid,方便版本跳轉。
    標籤特性:一個標籤對應一個commit版本,同一分支上不能出現兩個相同的標籤名。

  • 建立標籤
    git tag <tagname>     //爲當前版本庫中最新版本打上標籤,即當前HEAD指向的版本
    git tag <tagname>  <commitid>        //爲指定版本打上標籤
    git tag -a <tagname> -m "message"    //打上標籤時添加說明信息
  • 查看指定標籤的信息
    git show <tagname>
  • 查看已打標籤
    git tag
  • 刪除指定標籤
    git tag -d <tagname>
  • 推送指定標籤到遠程
    git push origin <tagname>
  • 推送所有未推送到遠程的標籤
    git push origin --tags
  • 當標籤已經被推送到遠程,此時想刪除
    一、git tag -d <tagname>      刪除本地的標籤
    二、git push origin :refs/tags/<tagname>      刪除遠程標籤

    特殊場景

    當因爲某種狀況沒法提交,此時又得新建一個分支處理其餘事情時,可以使用stash功能將工做區的改變先儲存起來,等其餘事情處理完後再恢復現場。


假設當前master分支的test.txt內容以下:
cat test.txt
this is for git test in master
當前咱們在dev分支,且將test.txt內容修改以下:
cat text.txt
this is for git test in dev
但咱們還不能提交改變。此時要求咱們新建一個新的分支去處理其餘事情。


處理方法以下:

  1. 儲藏工做區的改變
    git stash

    執行後,工做區狀態會變成當前分支最新版本的狀態,即test.txt內容爲"this is for git test in master",以前所作的改變被儲藏起來了。

  2. 建立新分支區處理其餘事情。
    git checkout -b forotherthing
  3. 處理完後切回dev分支
    git checkout dev
  4. 恢復現場,並將stash內容刪除
    git stash pop

    說明:
    修改A文件--->git stash--->再次修改A文件--->git stash
    此時git stash list會查到多個stash,可經過git stash apply stash@{N}恢復指定的stash,從而恢復到指定的狀態。

    git stash drop      刪除stash內容

    歡迎掃碼關注公衆號「KeepCode」,分享更多技術好文,並提供技術電子書籍免費下載,天天進步一點點~~~~
    git經常使用命令清單

相關文章
相關標籤/搜索