gpt4 book ai didi

git - 如何使用 Git 还原

转载 作者:IT王子 更新时间:2023-10-29 00:42:11 30 4
gpt4 key购买 nike

git revert 是如何使用的?

这听起来像是一个重复的问题,但当人们问它时,回答通常是,按照 Revert to a commit by a SHA hash in Git? 使用 git reset .

然后当有人询问如何使用 git reset 时,人们回答说你应该按照 Git - how to rollback 使用 git revert .

在您不知不觉中,八个不同的人出现了,他们用自己独特的方式来拯救 OP 的屁股,所有这些都在您的脑海中。

因此,让我们试着坚持简短并编写一份 git revert 的傻瓜指南。

一个场景:你已经提交了两次 master,这很糟糕。你已经 push 了,但其他人有你的错误改变。

您想撤消它。这不是您可以自己在代码中手动撤消的事情,例如某些向导或包管理器到处更改了大量内容 - 您只想将其全部恢复原状。

这就是源代码管理的全部内容。我相信这很容易。

好的,您将使用 git revert,但是如何使用呢?

在运行 git revert 之后,您还需要做其他事情吗?您是否必须提交所做的更改还原或直接还原到存储库或什么??

显然,您需要再次 push 并可能向团队宣布您的想法。

最佳答案

git revert 进行新的提交

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 还原:

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

日志中会有3次提交:

$ git log --oneline
1db4eeb Revert "bad update"
a1b9870 bad update
3f7522e initial commit

所以对于发生的事情有一致的历史记录,但文件就像从未发生过错误更新一样:

cat README.md 
Initial text

要还原的提交在历史记录中的哪个位置并不重要(在上面的示例中,还原最后一次提交 - 可以还原任何提交)。

结束问题

do you have to do something else after?

git revert 只是另一个提交,例如推送到远程,以便其他用户可以 pull/获取/merge 更改,您就完成了。

Do you have to commit the changes revert made or does revert directly commit to the repo?

git revert 一个提交 - 没有额外的步骤假设恢复单个提交是你想要做的。

Obviously you'll need to push again and probably announce to the team.

确实 - 如果远程处于不稳定状态 - 与团队的其他成员沟通他们需要 pull 以获得修复(恢复提交)将是正确的做法:)。

关于git - 如何使用 Git 还原,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19032296/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com