[英]Howto "git ls" files marked by git as "deleted by us"
我开始使用 git cherrypick; 因此,我现在(经常)面临这样的情况,这些情况给了我很多标记为“被我们删除”的文件。
我看到了另一个问题,其中提到了如何使用git ls-files --deleted
来获取平面文件列表; 然后可以通过管道传输到 xargs rm。
问题是:--deleted 没有列出那些“被我们删除”的文件。
所以,长话短说:删除“被我们删除”文件的最简单/直接的方法是什么?
(我真的很喜欢 git ls-files 方法;因为它不需要 sed/awk 魔法;所以也不必担心正确使用引号......)
更新; 只是为了解释为什么这不是一些“XY 问题”的情况:
我不知道像这样的“简单”命令,但你可以使用git status
本身。
while read -d '' status file; do
case "$status" in
(D?)
echo "Removing $file that was deleted by us."
#rm "./$file"
;;
esac
#printf 'status: %q\nfilename: %q\n' "$status" "$file"
done < <(git status -sz)
只匹配DU
而不匹配D?
(D 单字符) 适当更改大小写模式。
要仅运行rm
一次,请在if
块中使用files+=("$file")
,然后在最后使用rm "${files[@]}"
。
要列出标记为“由我们删除”的未合并文件,可以使用以下命令:
git status --porcelain --untracked-files=no | sed --silent 's/^DU //p'
或稍短的变体:
git status --porcelain -uno | sed -n 's/^DU //p'
在命令git status --porcelain
的输出中, git status --porcelain
合并的“被我们删除”文件用DU
标记。
在sed
,除非明确要求,否则选项-n
禁止打印,命令s/X/Y/
用s/X/Y/
替换 X(正则表达式),并且由于标志p
会打印修改后的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.