Git revert使用和例子

2021-08-22 03:14:01 字數 3219 閱讀 1080

# 撤銷前一次 commit

git revert head

# 撤銷前前一次 commit

git revert head^

# 撤回指定commit-id

#比如:git revert 0818badf6882ea2664a205bc8ef3a85425bb2537

git revert commit-id

revert是撤回指定版本的內容並提交乙個新的commit,不影響之前提交的內容

建立a.txt 內容為aaaa。然後新增到git

git add .

git commit -m "a.txt"

修改a.txt 新增內容」bbbb」。然後新增到git

git add .

git commit -m "a.txt add bbbb"

此時a.txt檔案內容如下

aaaa

bbbb

此時的提交記錄:

git log 

---commit 329515ee5d367bda3effa3e8f0c958e98e93ce31

author: *****

date: tue mar 6 19:25:39 2018 +0800

a.txt add bbbb

commit fe0d9b1d7ed0176f542a52835b1923584a4ba060

author: *****

date: tue mar 6 19:24:34 2018 +0800

a.txt

現在我要撤回內容bbbb,如下

git revert 329515
現在a.txt裡的檔案內容變為:

aaaa
再次檢視提交記錄:

git log

---commit 23880e1f7649b7dca14cfda7553b2ff2e6088d6e

author: *****

date: tue mar 6 19:29:35 2018 +0800

revert "a.txt add bbbb"

this reverts commit 329515ee5d367bda3effa3e8f0c958e98e93ce31.

commit 329515ee5d367bda3effa3e8f0c958e98e93ce31

author: *****

date: tue mar 6 19:25:39 2018 +0800

a.txt add bbbb

commit fe0d9b1d7ed0176f542a52835b1923584a4ba060

author: *****

date: tue mar 6 19:24:34 2018 +0800

a.txt

可以看到我們撤回了提交的內容同時增加了一條commit記錄。

如果撤回到之前版本出現衝突怎麼辦?我們先回到329515版本

git reset --hard 329515
恢復後在往裡面新增內容「cccc」並提交。 

此時a.txt檔案內容為:

aaaa

bbbb

cccc

此時的提交記錄:

git log 

---commit f1258438d3b63e78bb747c510f9af3e56be5b3b0

author: *****

date: tue mar 6 19:39:20 2018 +0800

a.txt add cccc

commit 329515ee5d367bda3effa3e8f0c958e98e93ce31

author: *****

date: tue mar 6 19:25:39 2018 +0800

a.txt add bbbb

commit fe0d9b1d7ed0176f542a52835b1923584a4ba060

author: *****

date: tue mar 6 19:24:34 2018 +0800

a.txt

然後我們撤回329515的修改

git revert 329515
這個時候git提示你有衝突要解決。我們開啟a.txt保留parent … 329515這個版本的內容,即」aaaa」。並執行以下命令

git revert --continue
這個時候git會繼續撤回,如果發現衝突會繼續提示。此時的提交日誌為

commit 78979e45add34a0f009263e49cc1c6c48a0f93d4

author: *****

date: tue mar 6 19:46:40 2018 +0800

revert "a.txt add bbbb"

this reverts commit 329515ee5d367bda3effa3e8f0c958e98e93ce31.

commit f1258438d3b63e78bb747c510f9af3e56be5b3b0

author: *****

date: tue mar 6 19:39:20 2018 +0800

a.txt add cccc

commit 329515ee5d367bda3effa3e8f0c958e98e93ce31

author: *****

date: tue mar 6 19:25:39 2018 +0800

a.txt add bbbb

commit fe0d9b1d7ed0176f542a52835b1923584a4ba060

author: *****

date: tue mar 6 19:24:34 2018 +0800

a.txt

如果不想解決衝突的話可以取消撤回:

git revert --abort

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...

git revert和git reset的區別

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