[英]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.