如何过滤' git fsck --unreachable'的结果?

时间:2016-05-23 19:45:40

标签: git

我试图查找使用某个文件somefile.jsx的无法访问的提交,比如说。我能这样做吗?或者我可以在其中一个文件中查找包含某些特定内容的内容吗?更深层次的问题我有数百个无法访问的提交,我正在寻找...

2 个答案:

答案 0 :(得分:0)

查看git log <filename>的特定文件的所有更改。

如果您运行git pop,则会从存储中删除更改并将其移至工作树。然后,如果您添加并提交了更多更改,那么它们将一直包含在提交中。

如果您没有看到git log <filename>要查找的更改,请确保运行git status以查看工作目录和暂存区域中的内容。

答案 1 :(得分:0)

  1. 运行git fsck --unreachable --no-progress以获取包含提交信息的行。
  2. Grep it for just commit,grep 'unreachable commit'
  3. 将其传递给cut -d' ' -f3以获取提交(第3个字段)。
  4. 把所有这些放在一起......

    git fsck --unreachable --no-progress | grep 'unreachable commit' | cut -d' ' -f3
    

    现在您有一个所有无法访问的提交列表。把它放在一个文件中。

    您可以在每个文件上运行git --no-pager log --format=oneline -n1 --stat <commit id>以查看他们更改的文件。这是一个小小的Perl单行代码。

    perl -nwle 'system "git --no-pager log --format=oneline -n1 --stat $_"' <commit file>
    

    你甚至可以用“WIP”来寻找旧的藏匿处。

相关问题