使用git add只暂存已删除的文件

ghg1uchk  于 2023-08-01  发布在  Git
关注(0)|答案(8)|浏览(139)

我运行了git status,看到几个修改的文件和几个删除的文件。
是否可以只暂存已删除或已修改的文件?

kxeu7u2r

kxeu7u2r1#

如果你有一个混合的修改和删除的文件,只想阶段删除的文件的索引,你可以使用git ls-files作为过滤器。

git ls-files --deleted | xargs git add

字符串
如果你只想将它应用到文件树的一部分,给予ls-files一个或多个子目录作为参数:

git ls-files --deleted -- lib/foo | xargs git add


若要仅对已修改的文件执行相同的操作,请使用--modified-m)选项,而不是--deleted-d)。

o7jaxewo

o7jaxewo2#

与@Steve的答案相同,但增加了一点变化:
在命令末尾添加**--all**,将ls-files命令返回的所有文件添加到索引中

git ls-files --deleted | xargs git add --all

字符串

aiqt4smr

aiqt4smr3#

对于PowerShell

git ls-files --deleted | % {git add $_}

字符串

yfjy0ee7

yfjy0ee74#

虽然所有的爱ls-files正在这里,在我看来

git add --all $(git diff --diff-filter=D --name-only)

字符串
更简单明了

vptzau2j

vptzau2j5#

另一种方式:

git diff --name-only --diff-filter=D | sed 's| |\\ |g' | xargs git add

字符串
我在这里使用sed,因为路径可能包含空格字符。

xdyibdwo

xdyibdwo6#

作为接受答案的替代方案,您可以使用交互模式git add -i,然后选择2来更新要暂存的文件,并仅选择已删除的文件(例如,使用范围1-30)。
有时候更容易记住。

kmbjn2e3

kmbjn2e37#

您可以使用此命令仅暂存已删除的文件

git diff --diff-filter=D --name-only -z | xargs -0 git add

字符串
希望能帮上忙!

yrefmtwq

yrefmtwq8#

只使用为脚本构建的核心命令来实现:

git diff-files -z --diff-filter=D --name-only | git update-index -z --remove --stdin

字符串

相关问题