在合并过程中,有时在未合并的路径中会存在多个文件标记为“deleted by us”。如果我想要保留它们被删除的状态,则需要对每个文件应用 git rm
命令。
如何使用一个命令而不是对每个文件使用 git rm
?
在合并过程中,有时在未合并的路径中会存在多个文件标记为“deleted by us”。如果我想要保留它们被删除的状态,则需要对每个文件应用 git rm
命令。
如何使用一个命令而不是对每个文件使用 git rm
?
可以使用其他Linux工具!git status --porcelain
适合轻松操作,"DU"等同于"deleted by us"。
git status --porcelain | grep "DU" | cut -c4- | xargs git rm
--porcelain[=<version>]
以易于脚本解析的格式输出。这类似于短输出,但会在Git版本和用户配置不变的情况下保持稳定。
我无法让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
git status | grep -rl "deleted by us" | xargs git rm
,但似乎并不起作用。 - huggiegit status --porcelain | grep "DU" | cut -c4- | xargs git rm
。 - jgawrych