如何在Git中推送空白字符变更且不被他人察觉?
如何在Git中推送空白字符变更且不被他人察觉?
兄弟,太懂你这种感受了——看着代码里乱七八糟的缩进和空格,浑身难受,但贸然改了又怕被同事说没事找事做大范围变更。刚好我之前也踩过类似的坑,给你几个实用的办法,既能把代码“洗干净”,又能尽量不引起注意:
让团队的diff工具默认忽略空白差异
不管是用Gitblit还是SourceTree,这些工具都支持忽略空白的diff查看选项。你可以自己先把所有空白修改整理好,单独提交一个备注为「代码格式统一整理」的提交,然后悄悄建议同事们在查看这个提交时开启忽略空白的设置:- 在SourceTree里,查看提交差异时勾选「忽略空白」选项;
- 在Gitblit的提交详情页面,找到差异显示的设置,选择忽略空格变化。
如果想一劳永逸,还可以在仓库根目录创建.gitattributes文件,添加以下内容:
* whitespace=trailing-space,space-before-tab * diff=ignorewhitespace然后在仓库的Git配置里添加:
git config diff.ignorewhitespace.ignoreAllSpace true这样团队成员查看diff时默认就会忽略空白变更,自然不会注意到你的格式调整。
将空白变更与功能变更合并提交(谨慎使用)
如果你不想单独提交格式变更,可以把空白修改和你正在开发的功能代码放在同一个提交里。这样同事们查看提交时,注意力会集中在功能逻辑的改动上,只要他们开启了忽略空白的diff选项,就不会留意到你悄悄做的格式清理。不过这个方法要谨慎用,万一后续需要回滚功能代码,可能会把格式修改也一并回滚掉。用Git命令分离空白变更
如果你担心合并提交有风险,可以用Git命令把空白变更单独提取出来:- 先完成所有空白修改,然后运行
git diff -w > feature-changes.patch(-w表示忽略空白差异),把非空白的功能变更导出为补丁文件; - 重置仓库到修改前的状态:
git reset --hard HEAD; - 应用补丁文件恢复功能变更:
git apply feature-changes.patch; - 提交功能变更后,再重新做空白修改并单独提交,这样这个纯格式的提交,只要大家用忽略空白的方式查看,就看不到实际的“变更”了。
- 先完成所有空白修改,然后运行
备注:内容来源于stack exchange,提问作者user10931326
相关产品推荐
相关产品推荐

