日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

删除隐藏版本信息 版本回退_git之版本穿梭术

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 删除隐藏版本信息 版本回退_git之版本穿梭术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上一篇主要針對使用git?add和git commit兩個指令提交文件到本地版本庫做了詳細的介紹,其實提交文件到版本庫無非就是兩個步驟,先將文件添加到暫存區,所有要提交的文件全部添加完畢,統一提交到版本庫。那我們每一次提交都會生成一個不同的版本,我們如何對這些不同的版本進行管理呢?本篇文章主要談談版本的管理,比如版本回滾,修改的管理刪除等。

暫存區文件刪除

我們都清楚,我們要更新版本庫首先git add一個文件,這時候這個文件所做的修改就會添加到暫存區,但是這時候如果我們發現添加錯文件了,我們如何刪除暫存區的文件呢?這里一般來說有三種情況存在:
  • 暫存區存在一個文件hello.txt,我們需要從暫存區刪除這個文件,但是工作區文件不能刪除。

  • 暫存區存在一個文件hello.txt,我們需要從暫存區刪除這個文件,并且同時刪除工作區文件。

  • 我們暫存區有多個文件,需要同時清空整個暫存區。

只清除暫存區的某個文件

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

git rm --cached hello.txt清空暫存區文件并且刪除工作目錄對應文件

在git暫存區有多個文件,如果我們只想要從暫存區刪除其中一個文件,并且將這個文件同時從工作目錄刪除,那我們可以使用命令:

git rm -f hello.txt

清空暫存區

清空暫存區所有緩存文件,可以刪除版本庫的index文件,就可以達到清空暫存區的目的,可以使用命令

rm .git/index我簡單的錄制了一個gif圖演示清除緩存區的操作:

暫存區文件修改比如我們有一個hello.txt文件,第一次插入了一句話,git add添加到暫存區,然后我們不使用git commit提交,而是選擇繼續更改工作區的hello.txt,這時候就導致暫存區的hello.txt文件和工作區的hello.txt不一致,那這時候選擇git commit提交究竟提交的是暫存區的舊版本還是工作區的新版本呢?我們上一篇其實講過一般情況下使用git commit -m只會提交暫存區的文件,所以說一般情況下就算工作區文件修改了也一樣只會提交暫存區的舊版本,但是為何說一般情況呢?因為我們上篇也提到了git?commit?-a -m命令,使用這個命令如果之前我們已經將hello.txt文件提交到版本庫,代表這個文件已經被Git進行版本管理,這時候使用git commit?-a -m命令則會將工作區做了修改但是沒有添加到暫存區的文件先添加到暫存區再提交,兩步操作合二為一,但是我們一般情況不建議使用這個命令,特別新手更是應該分成兩步操作確保不會出現問題。我也簡單的錄制了一個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 log,git?reflog,git reset我們就可以在所有版本來回穿梭,不用擔心回退導致版本丟失的問題。通過本篇文章講到的命令,基本可以滿足工作中對于版本庫管理的一般要求了。下一篇開始將本地倉庫接入遠程倉庫,實現將項目推送到第三方遠程倉庫存儲,比如codding,碼云,GitHub等。歡迎關注公眾號:程序猿周先森。查看更多精彩文章。推薦閱讀git入門篇(1)--初識Gitgit入門篇(2)--Git的安裝

git入門篇(3)--更新文件到版本庫

總結

以上是生活随笔為你收集整理的删除隐藏版本信息 版本回退_git之版本穿梭术的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。