大型项目中Git添加/提交时排除指定文件的自定义命令方法
实现排除指定文件的Git自定义命令
方法一:直接使用Git内置的排除语法
Git本身支持在路径参数中用:!语法排除指定文件,无需额外自定义命令就能快速实现需求:
- 添加所有文件但排除指定文件:
git add . ':!file1' ':!file2' ':!file3' - 提交所有追踪的文件但排除指定文件(Git 2.23+版本支持
--exclude参数):
兼容旧版本Git的写法:git commit -a --exclude=file1 --exclude=file2 --exclude=file3git commit -a -- ':!file1' ':!file2' ':!file3'
方法二:创建Git别名(自定义命令)
如果需要频繁执行排除操作,可以把命令封装成Git别名,简化输入:
固定排除指定文件的别名
编辑你的~/.gitconfig文件,添加以下内容:
[alias] add-all-except = "!git add . ':!file1' ':!file2' ':!file3'" commit-all-except = "!git commit -a -- ':!file1' ':!file2' ':!file3'"
之后直接用以下命令即可:
- 添加所有文件并排除指定项:
git add-all-except - 提交所有追踪文件并排除指定项:
git commit-all-except
支持动态指定排除文件的别名
如果需要每次灵活指定要排除的文件,可以定义带参数的别名:
[alias] add-except = "!f() { git add . $(printf ':!%s ' \"$@\"); }; f" commit-except = "!f() { git commit -a $(printf ':!%s ' \"$@\"); }; f"
使用示例:
- 排除file1和file2并添加所有文件:
git add-except file1 file2 - 排除file3并提交所有追踪文件:
git commit-except file3
注意事项
- 如果排除的文件包含空格或特殊字符,需用引号包裹路径,比如
':!my file with spaces' - 路径为相对当前工作目录的路径,若要排除子目录下的文件,需写全路径,比如
':!src/file1'
内容的提问来源于stack exchange,提问作者M.Hashir Anees
相关产品推荐
相关产品推荐

