【问题标题】:List all files in git repo not added by `git annex add`列出 git repo 中未由 `git Annex add` 添加的所有文件
【发布时间】:2020-08-24 02:20:57
【问题描述】:

有没有办法列出我通过git add(参考1)而不是git annex add(参考2)添加的所有文件?

mkdir myrepo
cd myrepo
git init .
mkdir foo
dd if=/dev/random of=foo/bar.ext count=1024 bs=1024
git add foo   # <----- ref 1   
git commit -m "add foo"
git annex init "listing"
mkdir baz
dd if=/dev/random of=baz/abc.ext count=1024 bs=1024
dd if=/dev/random of=baz/efg.ext count=2024 bs=1024
dd if=/dev/random of=baz/xyz.ext count=512 bs=1024
git annex add baz    # <---- ref 2
git commit -m "add baz"

所以当我运行git &lt;some command&gt; 时,它应该显示类似

foo/bar.ext

我使用的解决方案之一是 https://stackoverflow.com/a/61680771/7274758 。但是我想知道是否有更好的方法?

【问题讨论】:

    标签: git git-annex


    【解决方案1】:
    1. 使用 ls-files 列出 repo 中的所有文件。
    2. 使用annex find 列出附件中的所有文件。
    3. 找到unique entries from the above results
    git ls-files > ~/tmp/ls-files.list
    git annex find > ~/tmp/annex-find.list
    awk 'FNR==NR {a[$0]++; next} !a[$0]' ~/tmp/annex-find.list ~/tmp/ls-files.list
    

    【讨论】:

    • 你也可以将这个单行添加到你的 git 配置文件中:awk 'FNR==NR {a[$0]++; next} !a[$0]' &lt;(git annex find) &lt;(git ls-files),如果文件数量很大,请参阅 this question 以了解该 awk 脚本的快速替代方案。
    猜你喜欢
    • 2014-09-16
    • 1970-01-01
    • 2018-05-14
    • 2012-01-21
    • 2013-07-17
    • 2017-07-06
    • 2015-11-30
    • 2023-04-02
    • 2023-04-03
    相关资源
    最近更新 更多