Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';svn还原的等价物是git吗?_Git_Svn - Fatal编程技术网

什么';svn还原的等价物是git吗?

什么';svn还原的等价物是git吗?,git,svn,Git,Svn,我试图在Git中找到与svnRevert等价的svnRevert。在svn中,当我右键单击一个文件,然后单击revert,这将撤消所有本地编辑。该文件返回到最后一次提交。我在Git中找不到完全相同的命令。因为我是新来的,我不想把工作搞砸 比如说我做了一个提交Init。然后我做了一些改变。现在我想回到Init状态 谢谢你的帮助 git reset --hard Init 将使您的头回到Init。您可能想先做一个分支或标记,以保存您所做的任何其他工作。只要文件不是我通常使用的暂存文件 git ch

我试图在Git中找到与svnRevert等价的
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'