git忽略跟踪文件但保留在repo中(假设 - 未更改不起作用)

时间:2016-07-25 14:48:18

标签: git github

我试图忽略我的仓库(Github)中一个非常小的文件的所有更改。它是一个隐藏文件(select * from ( select *, row_number() over (partition by userid order by paymentdue desc) rn from #TmpTbl where invoicename = 'EF Fee' ) t where rn = 1 ),其中包含一个字符(.first_run)。我(显然)用它来检测我的包的第一次运行。

我遇到了这些问题:

  1. 该文件已被跟踪,因此将其添加到我的0无法正常工作。
  2. 我无法使用.gitignore,因为它会从回购中删除该文件,这不是我想要的。
  3. 使用git rm --cached <file>也不起作用。如果在将git update-index --assume-unchanged <file>应用于文件后,我将assume-unchanged更改为更长的字符串(例如:0),则不会显示为已更改(正确的行为)但是如果我更改了sdfgdgd代表0会显示为已修改
  4. 我认为第3点中描述的问题是由于this answer中所解释的:

      

    假设 - 未更改(..)不是Git的承诺,Git将始终认为这些路径未经修改 - 如果Git可以确定标记为假设的路径 - 未更改而没有产生额外的lstat(2)成本,它保留报告路径已被修改的权利(因此,&#34; git commit -a&#34;可以自由提交该更改)。

    我有什么办法可以让4忽略对此文件的未来更改吗?

2 个答案:

答案 0 :(得分:3)

您应该能够停止跟踪文件的更改:

git update-index --skip-worktree <file>

您可以通过以下方式恢复跟踪更改:

git update-index --no-skip-worktree <file>

答案 1 :(得分:1)

我相信没有办法完全按照自己的意愿行事。

但是如何更改应用程序逻辑呢?即,不检查内容,检查是否存在。如果该文件不存在,则之前尚未运行您的应用。将其从存储库中删除并将其添加到.gitignore。首次运行时,让您的应用程序使用您需要的任何内容创建文件。