Git中如何分别添加修改/删除文件到索引?求更简洁方法
更简洁的Git批量暂存方案
Git内置了按文件状态筛选的命令,无需解析git status的人类可读输出(格式可能随版本变动),以下是更可靠简洁的实现方式:
批量暂存已删除的文件
直接用git ls-files筛选已删除文件,配合git rm(同时标记删除并暂存,比git add更贴合场景):
git rm $(git ls-files --deleted)
如果文件名包含空格,推荐用xargs避免问题:
git ls-files --deleted | xargs git rm
批量暂存已解决冲突的「双方已修改」文件
解决冲突后,这类文件会被标记为已修改状态,用以下命令批量暂存:
git add $(git ls-files --modified)
同样,处理含空格的文件名:
git ls-files --modified | xargs git add
针对未解决的冲突文件
如果是git status里Unmerged paths下的「both modified」未解决冲突文件,先筛选再批量标记为已解决:
# 查看所有未解决冲突文件 git diff --name-only --diff-filter=U # 批量标记为已解决并暂存 git add $(git diff --name-only --diff-filter=U)
这些方法比你之前基于grep解析git status的脚本更稳定,因为Git内置命令的输出格式是标准化的,不会因界面更新失效。
内容的提问来源于stack exchange,提问作者JayabalanAaron
相关产品推荐
相关产品推荐

