git add/rm 个文件基于更改的类型(文件的)

git add/rm files based on the type of change (of the files)

有没有办法仅根据修改的类型暂存或取消暂存 (git add / git rm) 文件?

喜欢:

基于other linked answer你可以做到(在bash)

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

例如仅添加已删除的文件。

您可以对修改后的、新的、重命名的文件等使用其他 diff-filter 选项。当然,您可以将 git add 换成 git reset 等。

--diff-filter=[ACDMRTUXB*]

Select only files that are

  • A Added
  • C Copied
  • D Deleted
  • M Modified
  • R Renamed
  • T have their type (mode) changed
  • U Unmerged
  • X Unknown
  • B have had their pairing Broken
  • * All-or-none

Any combination of the filter characters may be used.

给出了大部分答案:git diff --diff-filter 将允许您列出已被 git 跟踪或已被 git add 编辑的文件.

要列出磁盘上但尚未添加的文件,您需要使用 git ls-files :

git ls-files --exclude-standard -o

此外,对于文件 git 检测到重命名的情况,您需要处理 git diff 的特定输出,或者使用 --no-renames 选项列出此类文件作为删除+添加文件。