成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在 git 中提交后,如何撤銷?

系統(tǒng) Linux
在使用 git 協(xié)同工作,有時候我們提交了一次修改,發(fā)現(xiàn)了錯誤,想要撤銷該次提交,該怎么做呢?

在 git 中撤消提交的最簡單方法是使用 revert 選項(xiàng):

git revert

這會撤銷最近的提交。

包括使用 revert 在內(nèi),有兩種方法可以撤銷提交操作:

  • git revert: 恢復(fù) git 倉庫的先前狀態(tài),并將更改反映在 git 日志中;
  • git reset:刪除上次提交。

還原提交(revert)

如果只是想要撤銷一個提交,但是不刪除 git 日志,可以使用 git revert 命令。其語法為我們剛剛提到過的:

git revert

上述命令中的 可以是用于提交的任何名稱,比如可以是在提交的 SHA1(提交時會得到這個值)、標(biāo)記、引用名稱或者其他任何唯一標(biāo)識提交的東西。

我們來舉個例子。首先在 git 中初始化一個文件:

$ git commit -m "init commit"
[master (root-commit) b1adf72] init commit
1 file changed, 3 insertions(+)
create mode 100644 ??README.md??
$ echo "a new line in readme" >> ??README.md??

使用 cat 命令來看一下這個文件的內(nèi)容:

$ cat ??README.md??
Heading
A readme is useless if it is empty. But this readme is even more useless because it wastes the reader's time.
a new line in readme

然后我使用 git add . 將其添加到暫存區(qū),再然后做一次提交(提交的文本為:a commit that will live on for ever):

$ git commit -m 'a commit that will live on for ever'
[master b731901] a commit that will live on for ever
1 file changed, 1 insertion(+)

這次提交,系統(tǒng)返回給我一個唯一標(biāo)識(master b731901)。現(xiàn)在我們運(yùn)行 git revert 并使用該唯一標(biāo)識,來恢復(fù)到上一次提交的狀態(tài):

$ git revert master b731901
[master 01c9be7] Revert "a commit that will live on for ever"
1 file changed, 1 deletion(-)

然后我們來看一下 git 日志,檢查撤銷操作有沒有反映在日志中:

$ git log commit 01c9be75eff7b5ae48c6c35bbb7c63ac1ebc3fcd (HEAD -> master) Author: Pratham Patel <??pratham@itsfoss.com??> Date: Mon Feb 28 21:29:36 2022 +0530

$ git log
commit 01c9be75eff7b5ae48c6c35bbb7c63ac1ebc3fcd (HEAD -> master)
Author: Pratham Patel <??pratham@itsfoss.com??>
Date: Mon Feb 28 21:29:36 2022 +0530
Revert "a commit that will live on for ever"
This reverts commit b731901deaa30851832c07b7cb7ed535b68d473d.
commit b731901deaa30851832c07b7cb7ed535b68d473d
Author: Pratham Patel <??pratham@itsfoss.com??>
Date: Mon Feb 28 21:29:12 2022 +0530
a commit that will live on for ever
commit b1adf72e535921ff966ff78f062943b717e78a08
Author: Pratham Patel <??pratham@itsfoss.com??>
Date: Mon Feb 28 21:20:43 2022 +0530
init commit

上述輸出可以看出,git 日志記錄了這次撤銷,但是 README 文件已經(jīng)被回復(fù)到先前的狀態(tài):

$ cat ??README.md??
Heading
A readme is useless if it is empty. But this readme is even more useless because it wastes the reader's time.

刪除提交

如果想要徹底恢復(fù)錯誤的提交且不保留日志,可使用 git reset。

git 中的每次提交(commit) 都相當(dāng)于是倉庫的一個快照,另外,在 git 中有一個名為 HEAD 的引用變量--使用 git log 查看日志的時候就能看到。這個 HEAD 用于指向你正在工作的分支中的最近提交。

為了演示,我們首先更改一個文件:

$ git commit -m "init commit"
[master (root-commit) b1adf72] init commit
1 file changed, 3 insertions(+)
create mode 100644 ??README.md??
$ echo "a new line in readme" >> ??README.md??
$ cat ??README.md??
Heading
A readme is useless if it is empty. But this readme is even more useless because it wastes the reader's time.
a new line in readme

然后提交:

$ git add .
$ git commit -m "a commit that i will regret later on"
[master fb58caf] a commit that i will regret later on
1 file changed, 1 insertion(+)

然后使用 git reset 命令來撤銷這次提交:

$ git reset --soft HEAD~1

接下來看下 git 日志:

$ git log
commit b1adf72e535921ff966ff78f062943b717e78a08 (HEAD -> master)
Author: Pratham Patel <??pratham@itsfoss.com??>
Date: Mon Feb 28 21:20:43 2022 +0530

可以看到,我們的上次提交(提交文本 a commit that I will regret later on)已經(jīng)不見了。

由此可見,這個提交被完全被刪除了,因?yàn)槲覍?HEAD 指向移動到了最后一個引用(用HEAD~1表示)。

這個刪除操作并沒有影響到我們的工作文件 ??README.md??:

$ git status
On branch master
Changes to be committed:
(use "git restore --staged ..." to unstage)
modified: ??README.md??

--soft 標(biāo)志表示在運(yùn)行 git reset 的時候修改的是 git 保存的日志。

如果想要將 git 存儲庫中的內(nèi)容恢復(fù)到先前的狀態(tài),可使用 --hard 標(biāo)志(不過要謹(jǐn)慎使用,確保需要的文件做好備份)。

責(zé)任編輯:龐桂玉 來源: TIAP
相關(guān)推薦

2015-06-24 09:54:38

Git撤銷

2009-04-16 17:24:56

報(bào)表處理報(bào)表內(nèi)嵌SQL Server

2022-04-28 09:02:55

Gitcommitlint配置

2009-12-30 16:16:37

建立LSP

2021-01-22 05:55:12

GitAngularJStype

2023-11-14 14:21:43

Git三路合并

2022-11-06 20:40:24

Gitgit log 命令

2017-11-13 12:44:30

Git命令工具

2022-09-15 07:44:32

Git全局配置本地配置

2014-06-04 09:34:36

2021-01-04 13:25:10

Git開源工具

2023-07-16 23:09:55

GitType代碼

2021-04-11 10:40:16

Git軟件開發(fā)

2011-05-16 13:24:00

MySQL全文搜索效率

2014-03-06 09:35:40

Git提交

2018-07-10 11:05:18

開發(fā)者技能命令

2018-07-10 10:45:00

規(guī)范Commit項(xiàng)目

2009-05-11 09:45:23

Visual Stud復(fù)制代碼ID

2021-05-13 23:54:12

DockerDockerfile鏡像

2009-06-30 15:54:00

數(shù)據(jù)庫訪問JSP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美日韩亚洲一区 | 日韩在线视频免费观看 | 欧美一区二区三区大片 | 免费成人高清在线视频 | a级在线观看 | 欧美精品二区 | 成人天堂噜噜噜 | 日韩在线电影 | 99久久99久久精品国产片果冰 | 99久久国产免费 | 91精品国产色综合久久不卡蜜臀 | 欧美一级淫片007 | 草久视频| 国产一区不卡 | 欧美理伦片在线播放 | 国产一区二区在线免费播放 | 精品国产一区二区三区在线观看 | 日本爱爱| 99精品欧美| 亚洲一区二区久久 | 亚洲视频中文字幕 | 国产精品毛片一区二区在线看 | 成人在线免费观看视频 | 久久久久国产精品 | 日日操操| 久久天天躁狠狠躁夜夜躁2014 | 欧日韩在线 | 国产精品日产欧美久久久久 | 超碰97人人人人人蜜桃 | 99福利视频导航 | 欧美 日本 国产 | 日韩欧美高清 | 亚洲午夜精品视频 | 久草成人 | av网站观看 | 欧美美女一区二区 | 国产一区在线看 | 国精日本亚洲欧州国产中文久久 | 少妇精品亚洲一区二区成人 | 国产人成在线观看 | 狠狠操电影 |