很多时候,我喜欢修改一些代码行以使调试更容易,但我实际上并不想提交它们。例如,我将通过注释掉一些代码行来禁用一些烦人的功能(如广告),或者我将日志级别和过滤器设置为仅我关心的那些,或者我将强制条件为真就这样我要运行的代码块实际上一直在运行。
在 Perforce 中,我会为这些文件创建一个“更改列表”并将其标记为“不要提交!”。在 Git 中相当于什么?分支不起作用,因为这些仅用于调试的修改需要与我当前正在进行的其他更改一起存在。
谢谢大家的回答。我最终做的是在 git 中编写一个 pre-commit 钩子,用于检查每个文件中的字符串“dont commit”(和其他变体)。如果是这样,则提交失败,我必须在提交之前编辑这些行。这是因为调试代码应该基于每行而不是每个文件来处理,因为有些文件既有调试更改,也有要提交的实际更改。(我用 perforce 的旧解决方案没有解决这个问题)。
我通常做的只是将调试代码放在自己的提交中,然后再恢复该提交。一个更复杂的解决方案是创建一个中间分支master
,调用它debug
。在分支中进行所有调试更改debug
,然后将功能分支从debug
. 当您准备好删除调试更改时,只需将您的功能分支重新定位到master
.
您实际上不想忽略这些文件,而是忽略这些更改。
我在这里看到两个解决方案:
我用于这种情况的命令是:
git checkout -- file ...
使用您为调试目的而修改的所有文件。
这会将文件恢复为HEAD
. 然后你可以安全地制作你的git commit -a
或任何东西。
告诉 git 问你要提交哪些更改(每个文件)
混帐添加 -p 。
请参阅#1085162。
但是您仍然需要删除调试代码。