Git系列(三)撤銷及刪除操作

復習

在前兩篇文章中主要學習了怎么初始化git倉庫,如何將文件添加和提交到倉庫,以及從倉庫中將版本回退。對應的操作命令分別為:

  • git init
  • git add <fileName>
  • git commit <fileName> -m"message"
  • git reset --hard HEAD^
    git reset --hard HEAD~20
    git reset --hard commitID
理解Git倉庫

在我們最開始用git init命令時相當于是初始化了一個倉庫,當然這個時候倉庫是還沒有東西的。使用git add命令就是相當于告訴git我們需要將哪些文件列入跟蹤清單,而git commit命令就是將清單上的文件提交保存到git倉庫。

git一共有三個區(qū)域:工作區(qū),暫存區(qū)及本地倉庫。工作區(qū)就是編輯文件時的區(qū)域,使用git add命令就是將我們工作區(qū)域的文件提交到了暫存區(qū),同時使用該命令后,文件才被git跟蹤。git commit命令就是將暫存區(qū)的文件提交到了倉庫。

被git跟蹤后的文件對應三種狀態(tài):已修改(modified)、已暫存(staged)、已提交(commited)。

現(xiàn)在捋一下流程。
第一步:git init 在某個文件夾下創(chuàng)建了一個git 倉庫,就是.git文件夾。
第二步:我們新建了一個文件,噼里啪啦寫了很多東西,這個時候?qū)υ撐募牟僮骶褪窃诠ぷ鲄^(qū)。然后我們用git add命令就是將該文件放到了暫存區(qū),此時該文件的狀態(tài)就是已暫存(staged)狀態(tài)。
第三步:git commit命令將暫存區(qū)的文件提交到了本地倉庫,此時該文件的狀態(tài)就是已提交(commited)。
第四步:我們繼續(xù)對文件進行修改,此時文件就是處于已修改(modified)狀態(tài),只有被git跟蹤過的(git add 過的)文件才有該狀態(tài),再次提交就是回到了上面流程。


從暫存區(qū)撤銷文件
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   helloGit.txt

上述命令(use "git reset HEAD <file>..." to unstage)告訴我們?nèi)绾螌捍鎱^(qū)的文件恢復到unstage狀態(tài)。使用git reset HEAD <file> 就是將暫存區(qū)文件恢復到工作區(qū)的狀態(tài)。

工作區(qū)撤銷修改
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   helloGit.txt

上述命令告訴我們,我們可以使用git add命令將文件保存到暫存區(qū),也可以使用"git checkout -- <file>..."取消對文件的修改,變回之前未修改的狀態(tài)。這個操作需要謹慎使用,一旦使用該操作回到未修改前的狀態(tài)后,修改的內(nèi)容就再也找不回來了。

移除文件

要從Git倉庫中移除文件,必須要將文件從已被跟蹤的清單文件中移除(就是從暫存區(qū)移除),然后提交。有兩種操作方式:

  • 第一種在工作區(qū)域手動刪除文件,然后add再commit。
  • 第二種方式用git rm <file>命令將其從暫存區(qū)刪除,再commit進本地倉庫。

對應第二種方式還有另外一個命令,git rm --cached <file> 該命令表示只將該文件從暫存區(qū)移除,但會保留在當前工作目錄中。此時位于工作區(qū)的文件處于已修改狀態(tài),如果又不想刪除了即可通過add再commit進倉庫。

修改最后一次的提交

有時候提交完文件發(fā)現(xiàn)注釋寫錯了或者還有幾個文件未提交,想要撤銷掉剛才的提交,可以使用git commit --amend重新提交。

如果上次提交完后的暫存區(qū)文件與現(xiàn)在的工作目錄對比,文件內(nèi)容上沒有改動,運行該命令就只是修改上次提交的注釋說明。如果有文件改動,我們可以先將文件add進暫存區(qū),然后使用該命令提交,相當于是在上次的基礎(chǔ)上追加了文件提交。然后用git log查看日志,會發(fā)現(xiàn)兩次的提交最終的結(jié)果是第二次的區(qū)域快照。

補充

git commit -a / -am "message" 命令是將add、與commit 兩個步驟合二為一了。但該命令不能操作Untracked的文件,意思就是只有已經(jīng)加入到跟蹤清單中的文件(之前被add進暫存區(qū)的)才能將兩個步驟合二為一。

使用git log命令查看日志,日志很多時一般會顯示前三個,然后一直按回車會顯示剩余的log,這時候輸入英文Q即可退出。

使用git commit命令時會進入vim編輯器,按i鍵進入編輯模式,輸入完提交的注釋信息后按esc退出編輯模式,然后輸入:wq即可保存退出。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容