溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

git常用命令清單

發(fā)布時間:2020-07-14 05:19:36 來源:網(wǎng)絡(luò) 閱讀:459 作者:1532514164 欄目:開發(fā)技術(shù)

本文通過學(xué)習(xí)廖雪峰老師的git教程整理而成,文章幾處引用教程中的圖,侵刪,老師的git教程鏈接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

概念簡單介紹

在A目錄使用git進(jìn)行版本管理,A目錄即為工作區(qū),我們在工作區(qū)上面操作文件(創(chuàng)建、修改、刪除等等),A目錄下的隱藏目錄.git是版本庫,.git目錄下主要有暫存區(qū)(stage)和當(dāng)前分支(默認(rèn)的git會自動創(chuàng)建master分支,不指定時當(dāng)前分支指向master)兩部分,如下圖
git常用命令清單

常用操作

  • 在指定目錄下創(chuàng)建版本庫:
    cd <DIR>
    git init
  • 創(chuàng)建一個新目錄,并創(chuàng)建版本庫:
    git init <DIR>
  • 將文件添加至版本庫:
    git add <FILE>       //將文件修改添加到暫存區(qū)中;
    git commit -m 'MESSAGE'   //將stage中的所有修改提交到當(dāng)前分支上;
  • 查看目錄文件狀態(tài)是否與版本庫一致:
    git status
  • 查看目錄文件與版本庫中的不同點(diǎn):
    git diff <FILE>
  • 查看提交日志(可用于版本回滾):
    git log

    git常用命令清單

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

    (回滾至A版本后,再次git log時沒法查到A版本之后的版本的commit id,此時如果想回到A版本之后的版本B時,可使用git reflog查看B版本的commitid)

  • 撤銷工作區(qū)的修改:
    git checkout -- <FILE>

    結(jié)果說明:
      當(dāng)FILE修改后未add到暫存區(qū)時,此時撤銷結(jié)果會將回到跟版本庫中的狀態(tài)。
      當(dāng)FILE已經(jīng)add到暫存區(qū)后,又對FILE進(jìn)行修改,此時撤銷結(jié)果會回到跟暫存區(qū)一樣的狀態(tài)。
      總結(jié):先查看暫存區(qū)中是否有FILE,有則將暫存區(qū)中的FILE狀態(tài)同步到工作區(qū),否則將當(dāng)前版本的FILE狀態(tài)同步到工作區(qū)

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

    結(jié)果說明:
      暫存區(qū)中沒有FILE的修改,工作區(qū)FILE還是保持修改狀態(tài)的。

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

    (誤刪時,只需git checkout -- <FILE>即可恢復(fù)文件)

    遠(yuǎn)程管理

    將本地git倉庫推送同步到遠(yuǎn)程倉庫

    1. 在github上創(chuàng)建一個新倉庫(此時為空的)
    2. 將遠(yuǎn)程庫和本地庫關(guān)聯(lián)起來
      git remote add origin git@github.com:lzs666/gittest.git

         (origin:遠(yuǎn)程庫的名稱,git@github.com:lzs666/gittest.git:在github上創(chuàng)建的新倉庫的地址)

    3. 本地庫的所有內(nèi)容推送到遠(yuǎn)程庫上
      git push -u origin master

        (會將本地庫的master分支內(nèi)容推送到遠(yuǎn)程庫的master分支上,-u參數(shù)會將本地的master分支與遠(yuǎn)程庫的master分支關(guān)聯(lián)起來,之后再push就不需要添加這個參數(shù)了)
      推送本地分支內(nèi)容同步到遠(yuǎn)程

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

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

      git checkout -b dev origin/dev

      之后開發(fā)完push到origin的dev分支上:

      git push origin dev

      若此時push時,若發(fā)現(xiàn)已經(jīng)有其他人push過了且與你推送的內(nèi)容有沖突,會導(dǎo)致推送失敗,解決如下:

    4. 指定本地dev分支與遠(yuǎn)程origin/dev分支的鏈接
      git branch --set-upstream-to=origin/dev dev
    5. 將最新的origin/dev抓取下來,此時工作區(qū)內(nèi)容會變成origin/dev的狀態(tài)
      git pull
    6. 修改后commit,再push

      分支管理

  • 創(chuàng)建一個分支:
    git branch dev
  • 切換到指定分支(切換后,會將工作區(qū)同步到dev分支的狀態(tài)):
    git checkout dev
  • 創(chuàng)建dev分支并切換到dev分支上(相當(dāng)于上面兩個步驟):
    git checkout -b dev
  • 查看當(dāng)前所在分支:
    git branch    //會列出所有分支,當(dāng)前分支面前會有一個*號
  • 合并指定分支到當(dāng)前分支:
    git merge dev

    說明:
    git merge dev執(zhí)行時,只是將當(dāng)前head指針移動到dev所在的位置,如下圖
    git常用命令清單
    此時如果將dev分支刪除,之后git log無法查看分支歷史,所以合并時可使用--no-ff參數(shù)修改合并模式,在merge時不是簡單移動指針,而是生成一個commit至內(nèi)容與dev一致。這種方式merge后便可通過git log查看分支合并歷史。

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

    此時的merge過程如下圖,其中結(jié)點(diǎn)1和結(jié)點(diǎn)2的內(nèi)容是一樣的。
    git常用命令清單

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

    git branch -D <name>

    標(biāo)簽管理

    標(biāo)簽作用:對應(yīng)一個commitid,方便版本跳轉(zhuǎn)。
    標(biāo)簽特性:一個標(biāo)簽對應(yīng)一個commit版本,同一分支上不能出現(xiàn)兩個相同的標(biāo)簽名。

  • 創(chuàng)建標(biāo)簽
    git tag <tagname>     //為當(dāng)前版本庫中最新版本打上標(biāo)簽,即當(dāng)前HEAD指向的版本
    git tag <tagname>  <commitid>        //為指定版本打上標(biāo)簽
    git tag -a <tagname> -m "message"    //打上標(biāo)簽時添加說明信息
  • 查看指定標(biāo)簽的信息
    git show <tagname>
  • 查看已打標(biāo)簽
    git tag
  • 刪除指定標(biāo)簽
    git tag -d <tagname>
  • 推送指定標(biāo)簽到遠(yuǎn)程
    git push origin <tagname>
  • 推送全部未推送到遠(yuǎn)程的標(biāo)簽
    git push origin --tags
  • 當(dāng)標(biāo)簽已經(jīng)被推送到遠(yuǎn)程,此時想刪除
    1、git tag -d <tagname>      刪除本地的標(biāo)簽
    2、git push origin :refs/tags/<tagname>      刪除遠(yuǎn)程標(biāo)簽

    特殊場景

    當(dāng)由于某種情況無法提交,此時又得新建一個分支處理其他事情時,可使用stash功能將工作區(qū)的改變先儲存起來,等其他事情處理完后再恢復(fù)現(xiàn)場。


假設(shè)當(dāng)前master分支的test.txt內(nèi)容如下:
cat test.txt
this is for git test in master
當(dāng)前我們在dev分支,且將test.txt內(nèi)容修改如下:
cat text.txt
this is for git test in dev
但我們還不能提交改變。此時要求我們新建一個新的分支去處理其他事情。


處理方法如下:

  1. 儲藏工作區(qū)的改變
    git stash

    執(zhí)行后,工作區(qū)狀態(tài)會變成當(dāng)前分支最新版本的狀態(tài),即test.txt內(nèi)容為"this is for git test in master",之前所做的改變被儲藏起來了。

  2. 創(chuàng)建新分支區(qū)處理其他事情。
    git checkout -b forotherthing
  3. 處理完后切回dev分支
    git checkout dev
  4. 恢復(fù)現(xiàn)場,并將stash內(nèi)容刪除
    git stash pop

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

    git stash drop      刪除stash內(nèi)容

    歡迎掃碼關(guān)注公眾號“KeepCode”,分享更多技術(shù)好文,并提供技術(shù)電子書籍免費(fèi)下載,每天進(jìn)步一點(diǎn)點(diǎn)~~~~
    git常用命令清單

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI