我想要一个基于git add -A
来跟踪工作树中所有文件的列表(例如,如果我的工作树中的每个文件都已更改,则.gitignore
将添加)我写的文件。
答案 0 :(得分:3)
这里必须要小心,因为git add -A
标志已经改变了Git 1.x和Git 2.x之间的含义。请参见Difference between "git add -A" and "git add .",然后向下滚动至this answer (or click this link),以了解我的意思。
对于Git 2.x,已经跟踪的文件(已在索引中)将继续在索引中。使用-A
将忽略工作树中丢失的所有文件。 (对于1.x,使用-A
将从工作树中丢失的索引文件中删除。)
这时您可以执行几项不同的操作,具体取决于结果是什么,这些操作主要围绕git ls-files
进行,
该命令只能显示:
-c
或--cached
-m
或--modified
-o
或--others
-i
或--ignored
必须将这些选项与--exclude-standard
结合使用,以使git ls-files
遵守与git add
相同的“删除未跟踪的文件”规则。所以:
git ls-files --exclude-standard --other
将为您提供当前未跟踪但由git add -A
添加的文件集。 不会为您获取当前正在跟踪的文件,并且git add -A
还会 添加这些文件;要获取这些内容,请使用git ls-files --modified
。 (假设所有文件都将被修改,请使用--cached
-但这不能解决丢失的工作树文件的问题。如果要这样做,这将非常棘手,最好的选择是是使用git diff或其变体之一来比较索引和工作树,并使用diff过滤器来检测已删除的文件。)
(合并两个列表以获取所有内容。)
答案 1 :(得分:1)
'error'
本来是我最好的猜测,但我在这里的一个回购协议上尝试了一下,但无济于事:-/似乎没有考虑我的.gitignore。
也许行之有效吗?