Git學習之旅 撤銷與刪除

2021-10-04 20:14:57 字數 4919 閱讀 4322

在使用git 過程中難免會出現各種錯誤,就讓我們一起學習怎麼應對吧

一般犯錯可以恢復的有三種情況:

用我們的乙個檔案 file2.txt 舉例

(此次演示的文件內容少可以直接修改回之前的狀態,此篇針對內容多的修改)
$ cat file2.txt

這是第二個檔案

修改後

$ cat file2.txt

這是第二個檔案,,,,

檢視一下狀態

$ git status

on branch master

changes not staged for commit:

(use "git add ..." to update what will be committed)

(use "git restore ..." to discard changes in working directory)

modified: file2.txt

no changes added to commit (use "git add" and/or "git commit -a"

)

git 提示我們 use 「git restore < file>…」 to discard changes in working directory

使用git restore < file > 丟棄工作區的修改

$ git restore file2.txt
檢視一下

$ cat file2.txt

這是第二個檔案

成功恢復到之前的狀態

git restore – < file >

修改後還沒有被上傳到暫存區,----> 恢復到和版本庫一樣的狀態

已經新增到暫存區後,又作了修改----> 恢復到新增暫存區後的狀態(需要加上 – 命令如下 git restore – file2.txt)

讓這個檔案回到最近一次git commit或git add時的狀態。

新增到暫存區,未提交

修改file2.txt

$ cat file2.txt

這是第二個檔案 ..

....

$ git add file2.txt
$ git status

on branch master

changes to be committed:

(use "git restore --staged ..." to unstage)

modified: file2.txt

git 告知我們 use 「git restore --staged < file >…」 to unstage

可以把暫存區的修改撤銷,重新放回工作區:

$ git restore -- file2.txt
$ cat file2.txt

這是第二個檔案

恢復成功。

檢視版本回退

建立新檔案 file3.txt

$ git add file3.txt
內容隨便寫

$ cat file3.txt

這是第三個檔案

我們add之後提交到本倉庫

$ git commit -m 'add file3.txt'

[master ad7c0e2] add file3.txt

1 file changed, 1 insertion(+)

create mode 100644 file3.txt

刪除

$ rm file3.txt
讓我們看一下狀態

$ git status

on branch master

changes not staged for commit:

(use "git add/rm ..." to update what will be committed)

(use "git restore ..." to discard changes in working directory)

deleted: file3.txt

no changes added to commit (use "git add" and/or "git commit -a"

)

告訴我們哪些檔案被刪除了

確定要從版本庫中刪除該檔案,那就用命令git rm刪掉,並且git commit

$ git

rm file3.txt

rm'file3.txt'

$ git status

on branch master

changes to be committed:

(use "git restore --staged ..." to unstage)

deleted: file3.txt

$ git commit -m 'del file3.txt'

[master 458d48d] del file3.txt

1 file changed, 1 deletion(-)

delete mode 100644 file3.txt

$ git status

on branch master

nothing to commit, working tree clean

工作區乾淨了

如果我們誤刪了,也不要擔心

前提是你已經把檔案提交之後出現的誤刪

上**:

$ git log --pretty=oneline

458d48d47450ad81a3e070eb628f9f9d324e8e07 (head -> master) del file3.txt

ad7c0e2dd145ce49498fd4c619e7e3f04f4d79e9 add file3.txt

e41ca86d2187ea5f0fe7b5ab6035f7150b315c1e add five

b8753c779f65c60ba4e8b901eb9be148f79bc2f0 add + five

070fd73e133fa1b36459e3896891853b4d5fd861 add six and new file2.txt

7e77647749e63f99e9519a2e11220c06d5ff7365 del one add two

1d0e2a29ad71b3eefa11c3c56668bf0ae22ccc1c add one

fa1e1cc03a9680e501e28e04a9e8b86eba9b5beb 這是第一次提交

讓我們回退到上乙個版本

$ git reset head^

unstaged changes after reset:

d file3.txt

$ git log --pretty=oneline

ad7c0e2dd145ce49498fd4c619e7e3f04f4d79e9 (head -> master) add file3.txt

e41ca86d2187ea5f0fe7b5ab6035f7150b315c1e add five

b8753c779f65c60ba4e8b901eb9be148f79bc2f0 add + five

070fd73e133fa1b36459e3896891853b4d5fd861 add six and new file2.txt

7e77647749e63f99e9519a2e11220c06d5ff7365 del one add two

1d0e2a29ad71b3eefa11c3c56668bf0ae22ccc1c add one

fa1e1cc03a9680e501e28e04a9e8b86eba9b5beb 這是第一次提交

看回來了, 讓我們看一下狀態

$ git status

on branch master

changes not staged for commit:

(use "git add/rm ..." to update what will be committed)

(use "git restore ..." to discard changes in working directory)

deleted: file3.txt

no changes added to commit (use "git add" and/or "git commit -a"

)

回退到了剛把檔案刪除的時候

來 撤銷一下

$ git restore -- file3.txt
看一下狀態

$ git status

on branch master

nothing to commit, working tree clean

檢視一下是否恢復

$ ls

file1.txt file2.txt file3.txt

$ cat file3.txt

這是第三個檔案

完美,成功恢復。但是要注意這個操作會讓你丟失提交之後再次修改沒有提交的內容。

git刪除 撤銷操作

首先簡單說一下git的三個區 工作區 可以相當於是我們的本地的資料夾,本地倉庫 版本庫 工作區有個.git隱藏資料夾,記錄著版本 暫存區 版本庫的乙個重要部分,工作區到版本庫的過程中,需要經過暫存區 在進行git操作時,經常會有一些誤操作 在這裡總結一些補救的方法 一 刪除錯誤新增到暫存區的檔案 g...

git撤銷 刪除修改

下面每步操作之前可輸入命令 git status檢視當前檔案狀態 git checkout read.txt read.txt為檔名 把readme.txt檔案在工作區的修改全部撤銷,git add 之後可撤銷,之前不可撤銷 git reset head read.txt read.txt為檔名 可...

Git筆記 撤銷 刪除 恢復

何為修改?比如新增了一行 刪除了一行 更改了某些字元 刪了一些又加了一些都是修改,甚至建立乙個新檔案也算乙個修改。實驗 我們在readme.txt增加一行,cat看一下,add 到快取區,而後又修改一下,然後cat看一下。commit提交一下並status檢視一下狀態 我們發現第二次的修改沒有提交哦...