【问题标题】:Is there a way to have a patch that is never commited, only changes the working copy?有没有办法让补丁永远不会提交,只更改工作副本?
【发布时间】:2014-08-11 08:19:49
【问题描述】:

我想修改一个测试以在一些额外的代码中添加注释:

-        /*SimpleMonitor monitor = new SimpleMonitor();
-        machine.attachMonitor(monitor);*/
+        SimpleMonitor monitor = new SimpleMonitor();
+        machine.attachMonitor(monitor);

也就是说,当我在本地构建时,我想启用 SimpleMonitor,但我总是希望签入的代码保持注释掉。 SimpleMonitor 打印出一些关于我的测试用例内部发生的详细信息。

当然,我永远不能将此更改添加到提交中。

git 有没有一种方法可以让我始终排除此更改,即使使用 'git add .' 也是如此。或者 'git add -A' 等等,这样 git 会跳过这个变化?

这个想法是,这是一个仅位于工作副本之上的增量。如果有一些巧妙的隐藏或使用分支或其他东西的技巧,请告诉我。

【问题讨论】:

    标签: git


    【解决方案1】:

    您可以为您的文件声明一个内容过滤驱动程序(一个“干净”脚本),它会在签入时自动注释正确的行。
    这是在 .gitattributes 文件中完成的:例如参见“Does .gitignore have an equivalent for version controlled files?”。

    (图片来自“Customizing Git Attributes”来自Git Book

    git config filter.<filtername>.clean ./<filterscript>
    

    您可以在您的存储库中对 &lt;filterscript&gt; 进行版本控制。

    【讨论】:

    • 谢谢,这听起来可以解决问题。与其他问题不同,我也不必对其他用户强制执行此操作,它只是为了我的本地测试。
    • @user2800708 是的,这将只在您的仓库本地,因为声明该过滤器的 git config 不会影响其他仓库。因此,即使 .gitattributes 和脚本在您的存储库中,过滤器也不会运行,除非您在存储库的 local 配置中明确声明它。
    猜你喜欢
    • 2016-06-06
    • 2018-02-14
    • 2022-01-02
    • 2014-01-24
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2021-04-22
    • 2015-11-26
    相关资源
    最近更新 更多