20

我正在从 SVN 过渡到 GIT,遇到了一个我找不到答案的问题。当我通过 SVN 处理一些开源项目时,我将描述一个常见的场景。

  1. 结帐
  2. 开始处理文件,进行更改,以测试项目的工作方式。
  3. 在 p.2 之后,一些文件被大量修改,我没有机会恢复到原始状态。
  4. 我从磁盘“rm filename.cpp”中删除了修改后的文件,运行命令“svn update”,瞧,所有原始文件都回来了。

所有这些都适用于 GIT,除了第 4 页。我尝试制作“git pull”,它说项目是最新的,即使本地文件夹中缺少原始文件,我也没有得到原始文件。

使用 git 时 p.4 的正确命令是什么。谢谢

4

4 回答 4

19

最简单的方法在输出中指示git status

git checkout -- file

其中 file 可以是已删除文件的名称。这将在不影响其他文件的情况下恢复已删除的文件。

于 2012-06-25T23:10:48.227 回答
17

尝试检查当前分支(或HEAD):

git checkout HEAD

或者,如果您想将所有内容恢复到上次提交的状态(警告:这将永久删除所有未提交的更改!),您也可以硬重置:

git reset --hard
于 2012-06-25T22:56:23.837 回答
1

这就是我要做的:

git reset HEAD <file-path> git checkout -- <file-path>

于 2018-03-07T16:05:50.363 回答
0

在这种情况下,Git 很糟糕,我一直在为此苦苦挣扎,以至于难以置信。这是我的做法:

  1. 将远程存储库克隆到本地 HD 上与现有本地存储库不同的位置
  2. 将已删除的文件/目录从新克隆的 repo 复制到现有的本地 repo
  3. 将更改提交到您现有的本地仓库,如果需要也推送到远程仓库
  4. 删除新克隆的本地仓库

为什么完成如此简单的任务会如此复杂和耗时,这让我无法理解......

于 2018-01-27T21:45:59.093 回答