有没有办法在git/github中恢复所有已删除的文件?

ercv8c1e  于 2023-01-24  发布在  Git
关注(0)|答案(1)|浏览(216)

我有一个很大的远程git/github仓库,里面的文件被我之前创建的文件随机删除,我想恢复仓库历史记录中所有被随机删除的带有特定扩展名的文件。
我试着在网上寻找,但没有人有能够恢复具有特定扩展名的所有文件的解决方案。

nbnkbykc

nbnkbykc1#

您可以首先列出这些已删除的文件(例如,这里的.txt文件),使用git log --diff-filter

git log --diff-filter=D --name-only --pretty="" | grep ".txt$"

然后,你可以使用git来恢复它们,可以使用以下命令:

git log... | xargs git restore --

这是在本地完成的,在克隆的Git仓库中。
它与GitHub无关,GitHub只是远程Git存储库托管服务,您可以推送到它。
如果xargs不起作用(因为它需要提交文件被删除的位置,以便恢复它),您需要一个bash脚本:

  • 首先在列表中包含提交哈希:
git log --diff-filter=D --name-only --pretty="%h:%n%f" | grep ".txt$"
  • 第二步,通过脚本对结果进行处理:
while read -r line; do
  commit_hash=$(echo $line | cut -d ':' -f 1)
  file_path=$(echo $line | cut -d ':' -f 2)
  git restore $commit_hash -- $file_path
done < <(git log --diff-filter=D --name-only --pretty="%h:%n%f" | grep ".txt$")

相关问题