gpt4 book ai didi

git - 如何将 "git ls"文件标记为 git 为 "deleted by us"

转载 作者:行者123 更新时间:2023-12-04 16:16:27 28 4
gpt4 key购买 nike

我开始使用git cherrypick;因此,我现在(经常)面临的情况是给我很多标记为“已被我们删除”的文件。

我看到了this other question ,提到了如何使用 git ls-files --deleted 来获取平面文件列表;然后可以将其通过管道传输到 xargs rm。

问题是:--deleted 没有列出那些“被我们删除”的文件。

那么,长话短说:删除“被我们删除”文件的最简单/直接的方法是什么?

(我真的很喜欢 git ls-files 方法;因为它不需要 sed/awk 魔法;所以也不用担心引号是否正确...)

更新;只是为了解释为什么这不是一些“XY 问题”情况:

  • 实际上我正在使用 git svn;连接到一些后端SVN服务器
  • SVN主干包含目录A、B、C
  • 我正在对影响所有三个目录的 trunk 进行更改
  • 但是:我运行 cherry-pick 的 git ... 实际上类似于在 SVN 服务器上创建的“产品分支”。这些“产品”分支只包含子集(所以一个有 A 和 B;另一个有 B 和 C)。
  • 我很努力;但我真的无法同时创建包含 SVN 主干和 SVN 产品分支的 git svn 克隆

最佳答案

我不知道这样的“简单”命令,但您可以为此使用 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 block 中使用 files+=("$file"),然后使用 rm "$ {files[@]}” 最后。

关于git - 如何将 "git ls"文件标记为 git 为 "deleted by us",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36184801/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com