2017-02-17 374 views
3

如何在推送后恢复git中意外删除的文件和文件夹。以下是该场景。在git中恢复已删除的历史记录文件

  1. 意外删除了一个文件夹,它有一个文件,并对其他文件进行了一堆更改。
  2. 现在,推动所有这些变化。因此,此推送包含已删除的文件夹以及其他已更改的文件。
  3. 除此之外,还有一些推动。

现在,我可以恢复已删除的文件,以及历史,然后推回到回购。

+0

Git没有*“*文件历史记录”。 Git有*提交历史记录*。恢复文件并且您的历史记录显示“提交K删除了一些文件,稍后提交R生成了与以前具有相同名称和相同内容的新文件”。这和你一样近。使用Ryan的答案来获取文件。 – torek

+0

如果你没有使用git来删除它们,你可以重新设置你的工作空间来让它们恢复。你确定他们被删除? – osowskit

+0

@osowskit你的意思是“如果你没有使用git删除”。我的问题本身是“如果我删除文件并推送删除的文件,如何恢复?” – Rams

回答

5

当然,只是从它存在的提交中检查出来。如果提交的是删除的文件是不管你目前已签出的顶端,这是HEAD^(前的最后一次提交):

git checkout HEAD^ -- path/to/file 

然后你可以提交,并将它推。

+1

你可以用一个提交SHA替换HEAD ^,这也可以工作。 –

1

假设您目前在master分支上,一个简单的解决方案是从上次提交(使用类似gitk帮助的东西)中找到GIT SHA1与您想要删除的文件。

执行命令

git checkout <GIT SHA1 value> 

将文件复制到记事本的内容(或任何文本编辑器)

执行命令

git checkout master 

重新创建与从记事本的内容文件

+0

这会带回文件的历史吗? – Rams

+0

是的,假设文件位于同一位置并且名称相同 –

相关问题