git revert和git reset的區別

2021-07-25 21:44:51 字數 2576 閱讀 2679

標籤: git

撤銷回退

reset

revert

2015-12-14 10:12

1415人閱讀收藏 

舉報

本文章已收錄於:

git知識庫

github(3)

目錄(?)

[+]

工作中,難免會遇到編寫錯誤的情況。那如何能撤銷修改,使得檔案回到修改前的狀態呢?下面我們開始講解如何撤銷修改。

在講解前,我們先要清楚撤銷修改前,檔案在git中的狀態:

1)只做本地修改,未git add

2)修改並git add

3)修改並git commit提交

4)修改並git commit,並且傳送到了github

針對以上4種情況,我們看看如果做相應的撤銷修改工作。

準備工作:我們先把readme.txt檔案內容修改一下,然後使用git status檢視一下狀態。

撤銷步驟:

1)使用git checkout -- readme.txt

2)使用git status檢視一下狀態,你會發現檔案被修改的部分已經恢復到未修改之前了。

準備工作:我們先把readme.txt檔案內容修改一下,然後使用git add命令將修改新增到快取,然後git status檢視一下狀態。

撤銷步驟:

1)刪除本地檔案readme.txt

2)使用git checkout -- readme.txt

準備工作:我們先把readme.txt檔案內容修改一下,然後使用git add和git commit提交修改,然後使用git log命令看一下提交記錄。

撤銷步驟:

1)使用git reset命令,可以撤銷本地提交。由於head表示當前版本,所以要恢復到上乙個版本的話,在後面加乙個「^」符號就可以了。

2)使用git log命令檢視一下,應該是退回到上乙個版本了

準備工作:向readme.txt檔案中填寫我的名字縮寫,然後提交併發送到github。使用git log命令檢視一下提交歷史記錄:

撤銷步驟:

1)我們通過git log可以看到上一次提交的id為df17865f......,那麼我們使用git revert命令撤銷本地提交(也可以用head代替本次id)

2)再使用git log命令檢視一下

3)再看一下檔案,acd572e5e那次提交確實被撤銷了,但提交資訊還在,這可能就是git revert和git reset的乙個區別吧。

標籤: git

string

2012-06-14 20:56

96693人閱讀收藏 

舉報

版本控制(49)

原文:git revert

是生成乙個新的提交來撤銷某次提交,此次提交之前的commit都會被保留

git reset 

是回到某次提交,提交及之前的commit都會被保留,但是此次之後的修改都會被退回到暫存區

具體乙個例子,假設有三個commit, git st:

commit3: add test3.c

commit2: add test2.c

commit1: add test1.c

當執行git revert 

head~1時, commit2被撤銷了

git log可以看到:

revert "commit2":this reverts commit 5fe21s2...

commit3: add test3.c

commit2: add test2.c

commit1: add test1.c

git status 沒有任何變化

如果換做執行

git reset --soft(預設) 

head~1後,執行git log

commit2: add test2.c

commit1: add test1.c

執行git status, 則test3.c處於暫存區,準備提交。

如果換做執行

git reset --hard head~1後,

顯示:head is now at commit2,執行git log

commit2: add test2.c

commit1: add test1.c

執行git st, 沒有任何變化

另外:git revert 是撤消該commit,作為乙個新的commit。

Git revert使用和例子

撤銷前一次 commit git revert head 撤銷前前一次 commit git revert head 撤回指定commit id 比如 git revert 0818badf6882ea2664a205bc8ef3a85425bb2537 git revert commit idre...

git revert和git reset的區別

原文 git revert 是生成乙個新的提交來撤銷某次提交,此次提交之前的commit都會被保留 git reset 是回到某次提交,提交及之前的commit都會被保留,但是此次之後的修改都會被退回到暫存區 具體乙個例子,假設有三個commit,git st commit3 add test3.c...

git revert和git reset的區別

git revert 是撤銷某次操作,此次操作之前的commit都會被保留 git reset 是撤銷某次提交,但是此次之後的修改都會被退回到暫存區 具體乙個例子,假設有三個commit,git st commit3 add test3.c commit2 add test2.c commit1 a...