我可以提交/推送一个文件而忽略 git 中的某些注释吗?

Dan*_*iel 5 git github

假设我和一个朋友正在处理work.txt一个位于github存储库中的文件。我想对此文件发表一些评论,这些评论存在于我的本地副本中,但在我更新时不会被推送。这可以用git来做吗?

想象一下,例如,这个文件是一些代码,我想添加一些有关函数的信息作为注释,以便我自己记住这一点,但由于我的朋友非常清楚地记得该函数的作用,所以他不需要那里的注释。我希望此评论出现在我的本地文件中,但不在存储库中。此外,我希望当文件更新时,注释保留在本地计算机的更新版本中(否则我可以简单地保留本地副本并在更新时覆盖注释)。

Mar*_*ger 2

虽然我认为人们试图提供解决方案而不只是说“不,这是不可能的”,这是令人钦佩的,但所提供的解决方案大多弊大于利。它们通常涉及在工作树中永久保留未提交/未暂存的更改,这充其量是不稳定的。

最接近可行的解决方案是贡萨洛·马修(Gonzalo Matheu)建议使用清洁/污迹过滤器。即便如此,距离扣篮还很远。(编写一个可以识别和删除某些注释的干净过滤器很容易,但是让污迹过滤器可靠地工作......这就更难了。)

简短的回答是,这不是 git 提供的功能。

这并不意味着您无法创建工具来协助它,如果出于某种原因这是值得的。(如果这听起来像是我在暗示这不值得……那么,看起来确实像是你在试图寻找社会问题的技术解决方案 - 因为你和你的朋友无法就什么达成一致代码注释的杠杆是合适的。)

您当然可以想出某种供您自己使用的文档文件,将其存储在工作树外部或给定可以通过忽略模式(*.mydoc或其他内容)匹配的文件名。这些文件将包含足够的信息来确定每个注释的插入位置,然后您可以编写一个脚本将它们组合到您的工作文件中。如果他们以一种显眼的方式做到这一点,以便可以使用简单的干净过滤器删除注释,那么您可以使用“组合器”脚本作为污迹过滤器,作为完成马修先生建议的方法的一种方法。