如何根据文件修改类型使用git add/git rm暂存或取消暂存文件
Git按文件修改类型执行暂存/取消暂存操作方案
Git原生支持按修改类型筛选文件执行暂存、取消暂存操作,核心通过内置的文件状态过滤能力实现,无需安装额外工具,各场景操作命令如下:
1. 已删除文件操作
- 暂存所有已删除的跟踪文件:
git ls-files --deleted | xargs git add - 取消暂存所有已暂存的删除文件:
git diff --cached --name-only --diff-filter=D | xargs git reset HEAD
2. 新增未跟踪文件操作
- 暂存所有新增未跟踪文件(自动忽略.gitignore规则匹配的文件):
git ls-files --others --exclude-standard | xargs git add - 取消暂存所有已暂存的新增文件:
git diff --cached --name-only --diff-filter=A | xargs git reset HEAD
3. 已修改跟踪文件操作
- 暂存所有已修改的跟踪文件(不含删除、新增文件):
git diff --name-only --diff-filter=M | xargs git add - 取消暂存所有已暂存的修改文件:
git diff --cached --name-only --diff-filter=M | xargs git reset HEAD
4. 重命名文件操作
- 暂存所有已识别的重命名文件:
git diff --name-only --diff-filter=R | xargs git add - 取消暂存所有已暂存的重命名文件:
git diff --cached --name-only --diff-filter=R | xargs git reset HEAD
补充说明:
- 无xargs的Windows环境可替换为对应语法,比如PowerShell下用
git ls-files --deleted | ForEach-Object { git add $_ }实现同等效果- --diff-filter参数支持多类型组合,比如需同时筛选修改和删除文件时,替换为
--diff-filter=MD即可
内容的提问来源于stack exchange,提问作者eshirvana
相关产品推荐
相关产品推荐

