如何使用Git Revert

10 浏览
0 Comments

如何使用Git Revert

如何使用git revert

这可能听起来像是一个重复的问题,但是当人们提问时,常常会回答使用git reset,参考Revert to a commit by a SHA hash in Git?

然后当有人问如何使用git reset时,人们会回复说你应该使用git revert,参考Git - how to rollback

在你知道之前,就有八个不同的人出现了,他们都有自己独特的方法来解决问题,而这些方法都超出了你的理解范围。

所以让我们尝试简明扼要地写一份关于git revert的入门指南。

场景:你已经向主分支提交了两次,但是这是错误的。你已经推送了代码,其他人也有了你的错误更改。

你想要撤销这些更改。这不是你能手动撤销的,比如有些巫师或者包管理器在各个地方都改了一大堆东西 - 你只是想把它们都恢复成原样。

这就是源代码控制的意义所在。我相信这很容易。

好了,你要使用git revert,但是怎么用呢?

在运行git revert之后,你需要做其他的事情吗?你需要提交revert所做的更改吗,还是revert直接提交到仓库中呢?

显然,你还需要再次推送,并且可能要向团队通报你的错误。

0
0 Comments

如何使用Git Revert

问题:git revert和git reset的区别以及如何正确使用它们?

在使用Git的过程中,我们经常会遇到需要撤销某个提交的情况。虽然这个问题已经存在很长时间了,但是很多人(包括我)仍然对revert和reset产生困惑。

作为一个初学者,经过一番尝试和错误(错误比尝试多得多),我得出了一个重要的观点:

- git revert需要指定你想要撤销的提交的ID,并将其保留在历史记录中。

- git reset需要指定你想要保留的提交,并将其之后的所有内容从历史记录中移除。

换句话说,如果你使用revert来撤销第一个提交,你会发现自己处于一个空目录,并且历史记录中会有一个额外的提交;而如果你使用reset,你的目录将会回滚到初始提交的状态,并且历史记录将会回到最后一次提交之前的状态。

为了更加清楚地说明这个问题,假设现在的日志如下:

# git log --oneline

cb76ee4 wrong

01b56c6 test

2e407ce first commit

使用git revert cb76ee4命令会将你的文件恢复到01b56c6的状态,并在历史记录中添加一个新的提交:

8d4406b Revert "wrong"

cb76ee4 wrong

01b56c6 test

2e407ce first commit

而使用git reset 01b56c6命令会将你的文件恢复到01b56c6的状态,并从历史记录中清除之后的所有提交:

01b56c6 test

2e407ce first commit

我知道这些内容对于初学者来说可能是“基础知识”,但是对于我来说还是挺困惑的。当我运行revert命令时,我本来期望能够找到初始提交的文件,但是花了一段时间才明白,如果你需要将文件恢复到“first commit”的状态,你需要使用下一个提交的ID。

我曾经遇到过同样的问题。这确实令人困惑,但却非常重要。最近我帮助一个同事解决问题时忘记了这个细节,这让我有点尴尬。

总结起来,要正确使用Git的revert和reset命令,我们需要清楚它们的区别和使用方法。revert用于撤销指定提交的更改并保留在历史记录中,而reset用于将目录恢复到指定提交并从历史记录中移除之后的所有提交。希望这篇文章能够帮助大家更好地理解和使用Git的revert和reset命令。

0
0 Comments

如何使用Git Revert

在使用Git时,有时候我们会遇到需要撤销某个提交的情况。在Git中,可以使用Git Revert命令来实现这个功能。下面我们来看一下如何使用Git Revert以及出现的原因和解决方法。

Git Revert是这样使用的:

git revert <需要撤销的提交哈希值>

使用git revert命令会创建一个新的提交,其中包含了需要撤销的更改。而git reset命令会擦除Git历史记录,而不是创建一个新的提交。

使用Git Revert的步骤与其他提交的步骤相同。只需执行以下操作即可。

“撤销一个提交”和“撤销到某个提交”之间的区别是微妙的,这个命令让我纠结了很多年。你的解释立即解决了我的困惑。非常感谢!

通过上面的内容,我们了解到了如何使用Git Revert命令来撤销提交。Git Revert命令创建一个新的提交,其中包含了需要撤销的更改。与此不同的是,Git Reset命令擦除了Git历史记录而不是创建新的提交。需要注意的是,“撤销一个提交”和“撤销到某个提交”之间的区别是微妙的,可能会让人产生困惑。希望这篇文章对你有所帮助。

0
0 Comments

Git Revert 是一个用于撤销提交的命令。它通过创建一个与已有提交相反的新提交来实现撤销。撤销后的文件状态与撤销前的提交从未存在的状态相同。下面是一个示例:

假设有以下提交历史:

$ cd /tmp/example
$ git init
Initialized empty Git repository in /tmp/example/.git/
$ echo "Initial text" > README.md
$ git add README.md
$ git commit -m "initial commit"
[master (root-commit) 3f7522e] initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
$ echo "bad update" > README.md 
$ git commit -am "bad update"
[master a1b9870] bad update
 1 file changed, 1 insertion(+), 1 deletion(-)

使用 git revert 撤销最后一次提交:

$ git revert HEAD
[master 1db4eeb] Revert "bad update"
 1 file changed, 1 insertion(+), 1 deletion(-)

撤销后,提交历史中会有三个提交:

$ git log --oneline

1db4eeb Revert "bad update"

a1b9870 bad update

3f7522e initial commit

尽管提交历史中有记录,但文件的内容与撤销前的错误提交相同:

cat README.md 
Initial text

回答一些相关问题:

1. 是否需要在撤销后进行其他操作?

git revert 仅仅是另一个提交,所以可以将其推送到远程仓库,以便其他用户可以获取更改。

2. 撤销的更改是否需要提交?

git revert 本身就是一个提交,不需要额外的步骤。

3. 是否需要再次推送并通知团队?

如果远程仓库处于不稳定状态,通知团队拉取修复(撤销的提交)是正确的做法。

撤销还可以撤销撤销,即连续多次撤销。但可能会出现冲突问题。

有些人更喜欢在提交之前先查看更改,可以使用 git revert -n 或 git revert --no-commit

总之,使用 git revert 可以方便地撤销提交,并保持提交历史的一致性。

0