Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
git与SVN更新的等价物是什么?_Git_Svn_Version Control - Fatal编程技术网

git与SVN更新的等价物是什么?

git与SVN更新的等价物是什么?,git,svn,version-control,Git,Svn,Version Control,使用SVN,您可以删除本地文件(将其放入垃圾箱),并在删除后运行SVN update进行恢复。SVN客户机只需提取文件的一个新副本(目录中不会涉及任何其他内容) 我还没能用GIT解决这个问题 我在Windows上使用的是Tortoise Git,而“pull”或“fetch”不能还原文件。我不想再次签出整个存储库(克隆)…您可以通过组合使用命令来恢复所有已删除的文件。显然,这只适用于已删除但尚未提交删除的文件 所涉及的指挥链可能如下所示: git checkout -- $(git diff -

使用SVN,您可以删除本地文件(将其放入垃圾箱),并在删除后运行SVN update进行恢复。SVN客户机只需提取文件的一个新副本(目录中不会涉及任何其他内容)

我还没能用GIT解决这个问题


我在Windows上使用的是Tortoise Git,而“pull”或“fetch”不能还原文件。我不想再次签出整个存储库(克隆)…

您可以通过组合使用命令来恢复所有已删除的文件。显然,这只适用于已删除但尚未提交删除的文件

所涉及的指挥链可能如下所示:

git checkout -- $(git diff --name-only --diff-filter=D)
git config --global alias.restore '!git checkout -- $(git diff --name-only --diff-filter=D)'
正如torek在注释
git checkout
中已经解释的,恢复文件的命令是,有趣的部分发生在
git diff
命令中。
--name only
选项告诉
diff
只打印更改文件的文件名,而
--diff filter=D
会注意忽略除已删除的文件以外的所有文件

为了便于使用,您可以创建一个别名,该别名还允许您在CMD中使用该命令。创建别名可能如下所示:

git checkout -- $(git diff --name-only --diff-filter=D)
git config --global alias.restore '!git checkout -- $(git diff --name-only --diff-filter=D)'
您必须在CMD上使用双引号(

然后,您将能够通过
git restore
轻松使用该命令


有关更多信息,请参阅和文档。

您可以执行“检查修改”“然后您将看到已删除文件的列表。右键单击任何文件并选择“还原”

如果您知道该文件名为
restore/me
,请使用
git checkout--restore/me
。如果您不知道文件名,请使用
git status
查找文件名。@torek:谢谢。它可以在cmd提示符下工作,但不能在tortoisegit上工作。我必须输入文件名,这很烦人。在SVN中,如果有任何文件丢失(因为我删除了它们),那么SVN更新将恢复所有文件…在Tortoise GIT中我必须采取的等效操作是什么?我不使用Tortoise GIT,所以我不知道。Git有重设--hard,但这是完全不同的:它意味着“使索引和工作目录都匹配给定的提交,并将分支移动到该点。”