我有一个很大的远程git/github仓库,里面的文件被我之前创建的文件随机删除,我想恢复仓库历史记录中所有被随机删除的带有特定扩展名的文件。我试着在网上寻找,但没有人有能够恢复具有特定扩展名的所有文件的解决方案。
nbnkbykc1#
您可以首先列出这些已删除的文件(例如,这里的.txt文件),使用git log --diff-filter:
.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脚本:
xargs
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$")
1条答案
按热度按时间nbnkbykc1#
您可以首先列出这些已删除的文件(例如,这里的
.txt
文件),使用git log --diff-filter
:然后,你可以使用git来恢复它们,可以使用以下命令:
这是在本地完成的,在克隆的Git仓库中。
它与GitHub无关,GitHub只是远程Git存储库托管服务,您可以推送到它。
如果
xargs
不起作用(因为它需要提交文件被删除的位置,以便恢复它),您需要一个bash脚本: