刪除隱藏版本資訊 版本回退 git神技 版本穿梭

2021-10-14 17:48:07 字數 2924 閱讀 3505

本篇文章主要談談版本的管理,比如版本回滾,修改的管理刪除等。

暫存區檔案刪除

我們都清楚,我們要更新版本庫首先git add乙個檔案,這時候這個檔案所做的修改就會新增到暫存區,但是這時候如果我們發現新增錯檔案了,我們如何刪除暫存區的檔案呢?這裡一般來說有三種情況存在:

只清除暫存區的某個檔案

在git暫存區有多個檔案,如果我們只想要從暫存區刪除其中乙個檔案,那我們可以使用命令:

git rm --cached hello.txt
清空暫存區檔案並且刪除工作目錄對應檔案在git暫存區有多個檔案,如果我們只想要從暫存區刪除其中乙個檔案,並且將這個檔案同時從工作目錄刪除,那我們可以使用命令:

git rm -f hello.txt
清空暫存區清空暫存區所有快取檔案,可以刪除版本庫的index檔案,就可以達到清空暫存區的目的,可以使用命令

rm .git/index
我簡單的錄製了乙個gif圖演示清除快取區的操作:

暫存區檔案修改

可以看到,我先將檔案新增到暫存區,然後修改檔案新增一句話,再次使用git status命令檢視暫存區狀態提示hello.txt檔案被修改,這時候我選擇git commit提交,再次檢視狀態一樣提示hello.txt檔案被修改,所以證明我們工作區所做的修改並沒有被真正提交,提交的一樣是暫存區的舊版本。

撤銷修改

有朋友看到這個標題撤銷修改,會納悶撤銷修改不就是將檔案從暫存區刪除,剛才已經提到過了,但是如果我們需要撤銷工作區的修改呢,也就是將hello.txt撤銷修改回退到上一次提交的版本如何做呢?實際上我們git add後使用git status命令

$ git statuson branch masterchanges to be committed:  (use "git restore --staged ..." to unstage)        modified:   hello.txtuntracked files:  (use "git add ..." to include in what will be committed)        project/        scoreinfo.txt
可以看到提示我們使用git restore --satged hello.txt可以從暫存區撤銷這個檔案,我們執行完這個命令再次執行git status
$ git statuson branch masterchanges not staged for commit:  (use "git add ..." to update what will be committed)  (use "git restore ..." to discard changes in working directory)        modified:   hello.txtuntracked files:  (use "git add ..." to include in what will be committed)        project/        scoreinfo.txt
可以看到再次提示可以使用git restore hello.txt撤銷工作區的修改回退到上一次提交的版本,再次使用這個命令你個發現我們剛才工作區所做的修改果然全部丟失了。那如果我們想要放棄暫存區的修改並且同時回退工作區檔案的修改,執行兩次命令固然沒問題,但是這時候我們可以使用乙個命令直接實現:

git checkout -- hello.txt
使用這個命令一般有兩種可能,hello.txt檔案修改已經新增到暫存區,使用這個命令則會從暫存區刪除hello.txt並且工作區檔案版本同時回退。第二種可能檔案工作區做了下蓋,還未新增到暫存區,則直接回退工作區版本,所以使用這個命令可以直接將剛才的兩個命令合二為一。版本回退剛才對版本做修改一直都是針對工作區和暫存區,那如果我們工作區版本修改出問題了廢掉了,我們想要將版本回退到版本庫某乙個版本如何實現呢?首先我們需要先檢視目前提交了幾個版本,這時候可以使用git log檢視不同版本的摘要資訊:

可以看到我們一共提交了三次修改,生成了3個commit_id,我們可以看到每一次提交的備註,然後找到我們需要回退版本的commit_id,取到了commit_id之後我們就可以實現版本回退,使用命令:

git reset --hard head^
git reset --hard commit_id
也就是我們只需要傳對應版本的commit_id就可以實現版本回退到對應的版本,而要查詢舊版本的commit_id剛才說過了使用git log就可以實現。

我們可以看到我是用命令回退到上乙個版本,再次git log檢視版本log,發現我剛才的版本由於回退丟失了,如果我版本回退後悔了,要如何恢復到剛才的新版本呢?git還提供了乙個記錄所有歷史的命令:git reflog,我們可以使用git reflog檢視所有版本歷史,最後使用git reset指定剛才的commit_id進行恢復。

Git版本回退

1 檢視檔案修改歷史 git log 返回的是commit後的操作記錄 git log pretty oneline 也可以使用這個命令格式化日誌輸出 2 版本回退 git reset hard head 回退到上乙個版本 git reset hard head 100 會退到第100個版本,例如現...

git版本回退

先說今天遇到的問題,看到乙個config.php的配置檔案一直在修改的狀態下,但是和遠端的config.php是不一致的,我不需要提交它,但是看它在 modified的狀態下,很不爽,想刪除它,git rm config.php,然後git push了下,結果不僅把本地的config.php乾掉了,...

git版本回退

把修改後的版本通過命令提交到版本庫 第一步 git add 檔名 字尾 第二步 git commit m commit id 但是有時候想回去怎麼辦呢?當然萬能的git給我們提供了方法的。我們先檢視一下最近到最遠的提交紀錄操作如下 在命令航輸入 git log 會顯示提交日誌,但是嫌輸出過多怎麼辦,...