什么';svn还原的等价物是git吗?
我试图在Git中找到与svnRevert等价的什么';svn还原的等价物是git吗?,git,svn,Git,Svn,我试图在Git中找到与svnRevert等价的svnRevert。在svn中,当我右键单击一个文件,然后单击revert,这将撤消所有本地编辑。该文件返回到最后一次提交。我在Git中找不到完全相同的命令。因为我是新来的,我不想把工作搞砸 比如说我做了一个提交Init。然后我做了一些改变。现在我想回到Init状态 谢谢你的帮助 git reset --hard Init 将使您的头回到Init。您可能想先做一个分支或标记,以保存您所做的任何其他工作。只要文件不是我通常使用的暂存文件 git ch
svnRevert
。在svn
中,当我右键单击一个文件,然后单击revert
,这将撤消所有本地编辑。该文件返回到最后一次提交。我在Git中找不到完全相同的命令。因为我是新来的,我不想把工作搞砸
比如说我做了一个提交Init。然后我做了一些改变。现在我想回到Init状态
谢谢你的帮助
git reset --hard Init
将使您的
头回到Init
。您可能想先做一个分支或标记,以保存您所做的任何其他工作。只要文件不是我通常使用的暂存文件
git checkout -- .
你也可以使用
git checkout HEAD -- path/to/some/file.txt
由于暂存区域的原因,要从头签出单个文件,或从任何其他提交中签出单个文件,这并不像svn revert
那么简单。根据您所做的工作以及您的目标,您需要使用git checkout
或git reset
。不过,您需要小心使用git reset,因为您可能会重写历史记录并丢失工作
假设您拥有提交图:
A <-- B <-- C <-- D
其中,A'
是一个新的提交(具有不同的id),它使您的工作回到与提交A
等效的状态
如果要丢失提交B
和C
,可以使用git reset--hard A
。这将把分支指针移回提交A
。你现在正在重写历史,所以要小心。如果您正在与此分支上的其他团队成员一起工作,则不希望这样做。如果它是您自己的分支,您可能需要在将其推送到远程回购时使用git push-f
,其中-f
代表--force
。您还需要确保已将push.default
设置为current
或upstream
,以避免推送所有匹配的分支并意外地重播某人的工作
FWIW,几年前我写了一篇文章。这在今天仍然重要。你可能会发现它很有用。tl;dr:git结帐
A <-- B <-- C <-- D <-- A'