Git删除所有在合并过程中标记为“deleted by us”的文件

3

在合并过程中,有时在未合并的路径中会存在多个文件标记为“deleted by us”。如果我想要保留它们被删除的状态,则需要对每个文件应用 git rm 命令。

如何使用一个命令而不是对每个文件使用 git rm?

2个回答

5

可以使用其他Linux工具!git status --porcelain适合轻松操作,"DU"等同于"deleted by us"。

git status --porcelain | grep "DU" | cut -c4- | xargs git rm

--porcelain[=<version>]

以易于脚本解析的格式输出。这类似于短输出,但会在Git版本和用户配置不变的情况下保持稳定。


嗯...不太熟悉这个命令。我尝试过 git status | grep -rl "deleted by us" | xargs git rm,但似乎并不起作用。 - huggie
管道在当前目录和子目录中的所有文件上按原样运行。我扩展了我的回复。 - j4nw
1
瓷器有变化吗?我们删除的内容没有在输出中,所以我不得不使用这个命令:git status --porcelain | grep "DU" | cut -c4- | xargs git rm - jgawrych

0

我无法让j4nw的答案在我的电脑上工作(使用Windows中的git bash),所以这是我如何使用SED修改它以适应我的需求:我特别想要隔离DU在git status --porcelain输出中设计的“已被用户删除”的行。

    git status --porcelain | sed -n -e '/^DU <dev_directory>/p' | sed 's/DU <dev_directory>/./' | xargs git rm

<dev_directory>是我所有有问题文件所在的根文件夹。例如,这是git status --porcelain输出的一行:

    DU dev/src/A/filename

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接