如何高效撤銷Git管理的檔案在各種狀態下的更改

2021-09-03 03:00:15 字數 1488 閱讀 7711

企業中我們一般採用分布式版本管理工具git來進行版本管理,在團隊協作的過程中,我們難免會遇到誤操作,需要撤銷更改的情況,那麼我們怎麼高效的進行撤銷修改呢?對於還未提交到暫存區的**怎麼高效撤銷更改呢?對於已經提交到暫存區的**,怎麼取消add操作?對於已經提交到本地倉庫,還沒有提交到遠端倉庫的**,怎麼進行高效撤銷更改呢?還有對於已經提交到遠端倉庫的**,如何進行高效的撤銷更改呢?那我們本文就來一一解決這些棘手的問題!

檔案還未提交到暫存區,只是在工作目錄中修改了,想要撤銷

git checkout [--] file-name (撤銷單個檔案修改)

git checkout [--] . (撤銷當前工作空間中所有檔案的修改)

檔案已經add到暫存區,但還沒有提交到本地倉庫,想要撤銷(即取消add操作)

git reset [head] file-name (撤銷暫存區中的單個檔案)

git reset [head] . (撤銷當前暫存區中的所有內容)

檔案已經提交到本地倉庫,但還沒有push到遠端倉庫,想要撤銷

git log (檢視並記錄下要回滾到的commitid)

git reset [--soft | --mixed |--hard] commitid (回退版本)

注:git reset 預設是 --mixed 模式,即 git reset --mixed 等價於 git reset.

--soft : 會保留工作區間以及暫存區index的提交,只是把git commit回退到某個版本,如還需提交,直接commit即可。

--mixed : 會在工作區保留原始碼,只是將git commit和暫存區index回退到某個版本。

--hard : 原始碼以及暫存區和git commit都回退到某個版本。

檔案已經提交到遠端倉庫,想要撤銷

git log (檢視並記錄下要回滾到的commitid)

git reset --hard commitid (回退版本)

git push -f origin branch-name

或git revert commitid(回退版本)

git push origin branch-name

注: reset和revert有著本質的區別,reset直接刪除了指定的commit,而revert是用一次新的commit來覆蓋要回滾的commit.

reset 是在正常的commit歷史中,刪除了指定的commit,這時 head 是向後移動了,而 revert 是在正常的commit歷史中再commit一次,只不過是反向提交,他的 head 是一直向前的.

如果在日後現有分支和歷史分支需要合併的時候,reset 恢復部分的**依然會出現在歷史分支裡.但是revert 方向提交的commit 並不會出現在歷史分支裡.  

通過本文我們就知道如何對不同狀態的git管理的檔案進行撤銷修改的操作,這樣即使我們不小心操作了什麼東西,我們也能很快的進行回滾,就是要做高效的程式猿~

如何高效撤銷Git管理的檔案在各種狀態下的更改

企業中我們一般採用分布式版本管理工具git來進行版本管理,在團隊協作的過程中,我們難免會遇到誤操作,需要撤銷更改的情況,那麼我們怎麼高效的進行撤銷修改呢?對於還未提交到暫存區的 怎麼高效撤銷更改呢?對於已經提交到暫存區和本地倉庫,還沒有提及到遠端倉庫的 怎麼進行高效撤銷更改呢?還有對於已經提交到遠端...

git撤銷單個檔案的修改 git撤銷檔案的修改

git撤銷某個檔案的修改,分為兩種情況 1.在工作區修改,但並未提交到暫存區 即並沒有add 對於單個檔案的撤銷修改而言,使用下面方法。git checkout 檔名 若想撤銷工作區中所有檔案的修改,則 git checkout 注意 git chekcout 是讓檔案回到最近一次該檔案git co...

git 撤銷更改的檔案

在沒有git add之前 1.撤銷所有更改 git checkout 2.撤銷指定檔案的更改 git checkout file.txt git add之後 git reset head file.txt git push 之後 git reset hard comitthash git log o...