git 撤銷修改

2022-08-05 10:12:11 字數 3011 閱讀 3461

自然,你是不會犯錯的。不過現在是凌晨兩點,你正在趕乙份工作報告,你在readme.txt中新增了一行:

[root@node1 git]# cat readme.txt 

git

isa distributed version control system.

git

isfree software distributed under the gpl.

git has a mutable index called stage.

git tracks changes of files.

my stupid boss still prefers svn

在你準備提交前,一杯咖啡起了作用,你猛然發現了「stupid boss」可能會讓你丟掉這個月的獎金!

[root@node1 git]# git statu

# on branch master

# changes not staged

forcommit:

# (use

"git add ...

"to update what will be committed)

# (use

"git checkout -- ...

" to discard changes in

working directory)

## modified: readme.txt

#no changes added to commit (use

"git add

" and/or "

git commit -a

")

你可以發現,git會告訴你,git checkout -- file可以丟棄工作區的修改:

[root@node1 git]# git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:

一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態

總之,就是讓這個檔案回到最近一次git commitgit add時的狀態

檢視readme.txt 的檔案內容

[root@node1 git]# cat readme.txt 

git

isa distributed version control system.

git

isfree software distributed under the gpl.

git has a mutable index called stage.

git tracks changes of fiels.

檔案內容果然復原了

git checkout -- file命令中的--很重要,沒有--,就變成了 「切換到另乙個分支」 的命令

現在假定是凌晨3點,你不但寫了一些胡話,還git add到暫存區了

[root@node1 git]# git status

# on branch master

# changes to be committed:

# (use

"git reset head ...

"to unstage)

## modified: readme.txt

git同樣告訴我們,用命令git reset head file可以把暫存區的修改撤銷掉(unstage),重新放回工作區:

[root@node1 git]# git reset head readme.txt

unstaged changes after reset:

m readme.txt

git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head時,表示最新的版本。

再用git status檢視一下,現在暫存區是乾淨的,工作區有修改:

[root@node1 git]# git status

# on branch master

# changes not staged

forcommit:

# (use

"git add/rm ...

"to update what will be committed)

# (use

"git checkout -- ...

" to discard changes in

working directory)

## modified: readme.txt

#no changes added to commit (use

"git add

" and/or "

git commit -a

")

場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file

場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head file,就回到了場景1,第二步按場景1操作。

場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠端庫。

git 修改 撤銷

git status 初始狀態是,什麼都沒有修改 on branch master nothing to commit working directory clean 修改了乙個檔案fu 狀態變成 root 172.18 4.100 gitlearn git status on branch mas...

Git撤銷修改

撤銷修改 加入在readme中加入了不想要的語言,在沒提交之前,使用 git status 檢視可以得到如下 遇到這種情況可以手動刪除,也可以使用 git checkout file命令丟棄工作區的修改。如圖,新的文件中取出了新增的部分。git checkout readme.txt會遇到兩種情況。...

git 撤銷修改

命令 git checkout file 命令git checkout readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況 一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態 一種是readme.txt已經新增...