【问题标题】:Git: How to checkout all deleted files through whole historyGit:如何通过整个历史检查所有已删除的文件
【发布时间】:2019-03-24 07:52:25
【问题描述】:

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

【问题讨论】:

  • 嗨。你试过什么吗?
  • @Mehdi 我找到了stackoverflow.com/questions/41593424/…,它只适用于一次提交
  • @bilabila 您是否在所有列表中搜索特定文件?还是您需要实际的清单?

标签: git git-checkout git-log


【解决方案1】:

在 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>(请参阅doc),如果省略,则回退到HEAD:

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

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

【讨论】:

    猜你喜欢
    • 2012-12-05
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多