git add/rm 个文件基于更改的类型(文件的)
git add/rm files based on the type of change (of the files)
有没有办法仅根据修改的类型暂存或取消暂存 (git add
/ git rm
) 文件?
喜欢:
- add/rm只有被删除的文件
- add/rm 仅限新文件
- add/rm 仅修改过的文件
- add/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
选项列出此类文件作为删除+添加文件。
有没有办法仅根据修改的类型暂存或取消暂存 (git add
/ git rm
) 文件?
喜欢:
- add/rm只有被删除的文件
- add/rm 仅限新文件
- add/rm 仅修改过的文件
- add/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
AddedC
CopiedD
DeletedM
ModifiedR
RenamedT
have their type (mode) changedU
UnmergedX
UnknownB
have had their pairing Broken*
All-or-noneAny 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
选项列出此类文件作为删除+添加文件。