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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【Git笔记3】关于撤销、删除、恢复的那些事儿

發布時間:2024/9/15 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Git笔记3】关于撤销、删除、恢复的那些事儿 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?在躋身于“國慶搶票大戰”的我們,不要忘記學習,今天接著上篇?【Git筆記2】必知習慣和如何版本回退,繼續開干!一起來瞅瞅如何撤銷沒有add的修改,如何撤銷以及add到暫存區的修改,如何刪除文件,如何恢復版本庫中刪除的文件,以及如何恢復工作區的文件。

? ? ?這一連環“如何”,且讓我慢慢道來,不過在此之前,我還是想說說Git為什么比其他版本控制系統設計的優秀,咱不能只口頭說,不拿出真家伙。

說說為什么Git比其他版本控制系統設計的優秀?

:Git跟蹤并管理的是修改,而非文件。

何為修改?比如新增了一行、刪除了一行、更改了某些字符、刪了一些又加了一些都是修改,甚至創建一個新文件也算一個修改。

實驗

我們在readme.txt增加一行,cat看一下,add 到緩存區,而后又修改一下,然后cat看一下。

提交一下并看下狀態:

我們發現第二次的修改沒有提交哦。先理一下我們的操作:
第一次修改 ->?git add?-> 第二次修改 ->?git commit

正驗證著:Git管理的是修改,當你用git add命令后,在工作區的第一次修改被放入暫存區,準備提交,但在工作區的第二次修改并沒有放入暫存區,所以,git commit只負責把暫存區的修改提交了,也就是第一次的修改被提交了,第二次的修改不會被提交。


提交后,用git diff HEAD -- readme.txt命令可以查看工作區和版本庫里面最新版本的區別:

從上面的實驗我們可以理解git如何跟蹤修改的,且我們可以得知:對于git的每次修改,每次修改,如果不用git add到暫存區,那就不會加入到commit中。

如何提交第二次修改呢?

  • 方案1:你可以繼續git add再git commit。

  • 方案2:可別著急提交第一次修改,先git add第二次修改,再git commit。

就相當于把兩次修改合并后一塊提交了: 第一次修改?->?git add?->?第二次修改?->?git add?->?git commit

我們操作一下方案1:

留下一個問題:如何丟棄第二次工作區的修改呢?

如何撤銷沒有add的修改?

?場景:當你亂改了工作區的某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file?實驗:首先在readme.txt增加My stupid boss still prefers SVN.使用git status后發現,嗯,修改了工作區。

你會發現Git提示你,git restore-- file可以丟棄工作區的修改,但是其實查了資料,用的最多的還是git checkout --?file

命令git checkout -- readme.txt意思是把readme.txt文件在工作區的修改全部撤銷。 這里有兩種情況:
  • 一種是readme.txt自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;?

  • 一種是readme.txt已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。

總之,就是讓這個文件回到最近一次git commit或git add時的狀態。注意:git checkout --file命令中的--很重要,沒有--,就變成了“切換到另一個分支”的命令。之后我們會慢慢遇到,暫時留個印象,先別急。

如何撤銷已經add到暫存區的修改?

場景:

當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步:step1:用命令git resetHEAD <file>step2:用命令git checkout --file 實驗

在readme.txt 中添加了一行,cat 看一下,然后git add 到暫存區。

gitcheckout -- file

gitcheckout -- file

使用git reset hard ,用命令git reset HEAD <file>可以把暫存區的修改撤銷掉(unstage),重新放回工作區:

現在已經放回工作區了,可以用git checkout? --?readme.txt 進行撤銷工作區的修改。

git reflog看下所有記錄。

如何刪除文件?

??

在Git中,刪除也是一個修改操作,我們實戰一下,先添加一個新文件test.txt到Git并且提交,一般情況下,你通常直接在文件管理器中把沒用的文件刪了,或者用rm命令刪了,這個時候,Git知道你刪除了文件。

因此,工作區和版本庫就不一致了,git status命令會立刻告訴你哪些文件被刪除了。

確定要從版本庫刪除該文件,那就用命令gitrm 刪除,且commit,注意一下:先手動刪除文件,然后使用git rm <file>和git add<file>效果是一樣的。

如何恢復版本庫中刪除的文件?

??

在版本庫中把文件刪除后的你呀,后悔了,怎么把刪除的test.txt找回來呢?那么你可以直接用:

git reset --hard HEAD^?? //回退上個版本??

不是git reset -- hard HEAD^

注意:但是可能會影響你其他修改但是未提交的其他內容的。

如何恢復工作區的文件?

??

因為版本庫里還有呢,所以可以很輕松地把誤刪的文件恢復到最新版:git checkout?-- <file>

git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。

注意:從來沒有被添加到版本庫就被刪除的文件,是無法恢復的!

如果報錯:error: pathspec 'test.txt' did not matchany file(s) known to Git,需要做的是兩步走:

step1:git reset HEAD <file>

step2:git checkout -- <file> ??//就是在工作區恢復暫存區版本

? ? ??一連環“如何”,你覺得如何?接下來一篇我們會介紹下常見的遠程倉庫操作:添加遠程庫、從遠程庫克隆,以及分支管理的部分知識。

期待與你再見!
來和小伙伴們一起向上生長呀!掃描下方二維碼,添加小詹微信,可領取千元大禮包并申請加入 Python 學習交流群,群內僅供學術交流,日常互動,如果是想發推文、廣告、砍價小程序的敬請繞道!一定記得備注「交流學習」,我會盡快通過好友申請哦!

👆長按識別,添加微信(添加人數較多,請耐心等待)👆長按識別,關注小詹(掃碼回復 1024 領取程序員大禮包)推薦閱讀:(點擊標題即可跳轉)

總結

以上是生活随笔為你收集整理的【Git笔记3】关于撤销、删除、恢复的那些事儿的全部內容,希望文章能夠幫你解決所遇到的問題。

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