1

我想通过整个历史恢复所有已删除的文件,这意味着在删除它的提交之前将文件签出到提交?

4

1 回答 1

3

在 bash 上下文*中,您可以使用以下命令从您的存储库中获取所有已删除文件的排序列表

git log --all --diff-filter=D --name-only --pretty=format:'' | sort | uniq

在哪里

--all表示记录所有提交,无论当前位置如何HEAD

--diff-filter=D根据此条件过滤显示的提交:“ D”,表示“已删除”

--name-only输出文件名

--pretty=format:''关闭文件名以外的任何其他输出

然后形成的 git 命令返回一个列表,该列表发送到

| sort按字母顺序对列表进行排序,然后

| uniq为每个双行只保留一个实例(否则删除然后重新创建然后重新删除的文件将在列表中出现两次)


当然,您可能还想限制历史遍历的范围。如果您只需要从分支中删除的提交super-feature,则将其添加为<revision range>for 日志(请参阅doc),如果省略,则回退到HEAD

git log --all --diff-filter=D --name-only --pretty=format:'' master..super-feature | sort | uniq

* (例如,在基于 linux 的系统上,或者在 GitBash 中用于 Windows 用户)

于 2019-03-24T09:32:53.950 回答