我运行了git status,看到几个修改的文件和几个删除的文件。是否可以只暂存已删除或已修改的文件?
git status
kxeu7u2r1#
如果你有一个混合的修改和删除的文件,只想阶段删除的文件的索引,你可以使用git ls-files作为过滤器。
git ls-files
git ls-files --deleted | xargs git add
字符串如果你只想将它应用到文件树的一部分,给予ls-files一个或多个子目录作为参数:
ls-files
git ls-files --deleted -- lib/foo | xargs git add
型若要仅对已修改的文件执行相同的操作,请使用--modified(-m)选项,而不是--deleted(-d)。
--modified
-m
--deleted
-d
o7jaxewo2#
与@Steve的答案相同,但增加了一点变化:在命令末尾添加**--all**,将ls-files命令返回的所有文件添加到索引中
git ls-files --deleted | xargs git add --all
字符串
aiqt4smr3#
对于PowerShell
git ls-files --deleted | % {git add $_}
yfjy0ee74#
虽然所有的爱ls-files正在这里,在我看来
git add --all $(git diff --diff-filter=D --name-only)
字符串更简单明了
vptzau2j5#
另一种方式:
git diff --name-only --diff-filter=D | sed 's| |\\ |g' | xargs git add
字符串我在这里使用sed,因为路径可能包含空格字符。
sed
xdyibdwo6#
作为接受答案的替代方案,您可以使用交互模式git add -i,然后选择2来更新要暂存的文件,并仅选择已删除的文件(例如,使用范围1-30)。有时候更容易记住。
git add -i
2
1-30
kmbjn2e37#
您可以使用此命令仅暂存已删除的文件
git diff --diff-filter=D --name-only -z | xargs -0 git add
字符串希望能帮上忙!
yrefmtwq8#
只使用为脚本构建的核心命令来实现:
git diff-files -z --diff-filter=D --name-only | git update-index -z --remove --stdin
8条答案
按热度按时间kxeu7u2r1#
如果你有一个混合的修改和删除的文件,只想阶段删除的文件的索引,你可以使用
git ls-files
作为过滤器。字符串
如果你只想将它应用到文件树的一部分,给予
ls-files
一个或多个子目录作为参数:型
若要仅对已修改的文件执行相同的操作,请使用
--modified
(-m
)选项,而不是--deleted
(-d
)。o7jaxewo2#
与@Steve的答案相同,但增加了一点变化:
在命令末尾添加**--all**,将ls-files命令返回的所有文件添加到索引中
字符串
aiqt4smr3#
对于PowerShell
字符串
yfjy0ee74#
虽然所有的爱
ls-files
正在这里,在我看来字符串
更简单明了
vptzau2j5#
另一种方式:
字符串
我在这里使用
sed
,因为路径可能包含空格字符。xdyibdwo6#
作为接受答案的替代方案,您可以使用交互模式
git add -i
,然后选择2
来更新要暂存的文件,并仅选择已删除的文件(例如,使用范围1-30
)。有时候更容易记住。
kmbjn2e37#
您可以使用此命令仅暂存已删除的文件
字符串
希望能帮上忙!
yrefmtwq8#
只使用为脚本构建的核心命令来实现:
字符串