標籤:

說說Git reset 與 revert 的故事

俗話說一入Git深似海,單獨說Git一本書恐怕都不夠,今天只是淺嘗止渴而已。

簡單說說resetrevert2個主要命令。

要學習Git,首先要明白Git幾個基本概念

  • Workspace:工作區
  • Index / Stage:暫存區
  • Repository:倉庫區(或本地倉庫)

搞懂了這三個區域,才能更好理解這些Git命令是在幹什麼。

一、reset

reset命令的作用?

reset命令把當前分支指向另外一個位置(提交的ID版本號),並且有選擇性的變動暫存區工作區的內容。

原理是基於本地倉庫的文件去覆蓋暫存區或工作區的內容

reset主要參數的區別

當沒有指定ID的時候,默認使用HEAD,如果指定ID,那麼就是基於指向ID去變動暫存區或工作區的內容

// 沒有指定ID, 暫存區的內容會被當前ID版本號的內容覆蓋,工作區不變ngit resetnn// 指定ID,暫存區的內容會被指定ID版本號的內容覆蓋,工作區不變ngit reset <ID> n

  • --mixed(默認)

默認的時候,只有暫存區變化

  • --hard參數

如果使用--hard參數,那麼工作區也會變化

  • --soft

如果使用--soft參數,那麼暫存區和工作區都不會變化

三次的提交記錄

當前文件的內容

使用`--hard`參數,那麼工作區也會變化

如果使用`--soft`參數,那麼暫存區和工作區都不會變化


二、revert

revert命令撤銷指定的commit並且新建一個commit,新建comment的內容由指定commit前一個提交內容保持一致

git revert <commit> n

revert.txt 三次提交記錄

revert前revert.txt的內容

revert後revert.txt的內容


參考鏈接

  • 圖解Git
  • 猴子都能懂的Git入門

以上部分圖片來源於圖解Git


推薦閱讀:

Visual Studio Code 使用Git進行版本控制
git 怎麼在倉庫裡面上傳一個文件夾到github?
Git 自動回滾 和 應用發布的二三事
Git由淺入深之細說變基(rebase)

TAG:Git |