偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

git revert

這會(huì)撤銷最近的提交。

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

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

還原提交(revert)

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

git revert

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

我們來(lái)舉個(gè)例子。首先在 git 中初始化一個(gè)文件:

$ 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 命令來(lái)看一下這個(gè)文件的內(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)返回給我一個(gè)唯一標(biāo)識(shí)(master b731901)?,F(xiàn)在我們運(yùn)行 git revert 并使用該唯一標(biāo)識(shí),來(lái)恢復(fù)到上一次提交的狀態(tài):

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

然后我們來(lái)看一下 git 日志,檢查撤銷操作有沒(méi)有反映在日志中:

$ 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ù)錯(cuò)誤的提交且不保留日志,可使用 git reset。

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

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

$ 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 命令來(lái)撤銷這次提交:

$ git reset --soft HEAD~1

接下來(lái)看下 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)不見(jiàn)了。

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

這個(gè)刪除操作并沒(méi)有影響到我們的工作文件 ??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 的時(shí)候修改的是 git 保存的日志。

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

責(zé)任編輯:龐桂玉 來(lái)源: 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開(kāi)源工具

2023-07-16 23:09:55

GitType代碼

2021-04-11 10:40:16

Git軟件開(kāi)發(fā)

2011-05-16 13:24:00

MySQL全文搜索效率

2014-03-06 09:35:40

Git提交

2018-07-10 11:05:18

開(kāi)發(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ù)庫(kù)訪問(wèn)JSP
點(diǎn)贊
收藏

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