gpt4 book ai didi

git - git 中的 svn revert 等价物是什么?

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

我试图在 Git 中找到与 svn Revert 等效的东西。在 svn 中,当我右击一个文件然后单击 revert 时,这将撤消所有本地编辑。该文件返回到最后一个 commit。我在 Git 中找不到完全相同的命令。因为我是新手,所以我不想搞砸我的工作。

假设我提交了 Init。然后我做了一些改变。现在我想回到 Init 状态。

感谢帮助

最佳答案

因为暂存区,它不像svn revert那么简单。根据您所做的和您的目标,您需要使用 git checkoutgit reset。不过,您需要小心使用 git reset,因为您可能会重写历史并丢失工作。

假设您有提交图:

A <-- B <-- C <-- D

并且您目前处于 D 并进行了一些更改。要简单地放弃所有更改(暂存或未暂存),您可以使用 git reset --hard HEADgit reset --hard D。两者都会重置您的工作副本的状态。

如果您希望工作副本的状态与A 相同,但又不丢失提交BC,那么您应该使用: git checkout A -- . 从你的工作副本的顶部。这会将您的工作副本的状态设置为 A 的内容。此时,您的工作树是脏的,因此您需要提交以记录您想要返回的事实。此时的提交图将是:

A <-- B <-- C <-- D <-- A'

其中 A' 是一个新的提交(具有不同的 id),它将您的工作恢复到提交 A 的等价物。

如果你想丢失提交 BC,你可以使用 git reset --hard A。这会将您的分支指针移回提交 A。你现在正在改写历史,所以要小心。如果您正在与该分支上的其他团队成员一起工作,则您不希望这样做。如果它是你自己的分支,你可能需要使用 git push -f,其中 -f 代表 --force,在推送它时到您的远程仓库。您还需要确保已将 push.default 设置为 currentupstream 以避免推送所有匹配的分支并意外倒回某人的分支工作。

FWIW,我写了一个blog post about reverting changes in Git几年前。它在今天仍然有意义。您可能会发现它很有用。

关于git - git 中的 svn revert 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21693295/

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