谁触摸我的git假设 - 没有改变?

时间:2011-09-13 08:52:13

标签: git git-index

我的仓库中有一个文件,我已将假设未设置的位设置为:

git update-index --assume-unchanged someFile.txt

有一段时间,在对repo进行一些工作后,该位未设置,文件自动不再是assume-unchanged

谁在接触它?在明确告诉git之前,我怎样才能使这个永久化:

git update-index --no-assume-unchanged someFile.txt

这里发生了什么?


编辑:我在本地更改的配置文件上使用假设未更改的位,并且永远不应该提交,更不用说上推了。我不希望在git status或其他任何地方看到它们,除非我明确告诉git我想编辑并提交其中一个。


编辑:好的,我想我设法重现了这个问题。

我从不同的仓库(没有--assume-unchanged)提交了该文件,拉回了我的仓库,果然,该位被重置了。

因此出现了两个问题:

  1. 是否可以在中央权威仓库上设置此位,以便它传播到所有仓库?
  2. 即使远程更改它,是否有可能使这一点变得粘稠?

2 个答案:

答案 0 :(得分:3)

IIRC如果忽略版本化文件,它会表现得那样。您可以忽略来自.gitignore的所有工作树或来自.git/info/exclude 的特定工作树(是的,它有效,但不是用于处理的方式)。

答案 1 :(得分:1)

似乎--skip-worktree +稀疏结账可能允许这种行为。

  

从   git assume unchanged vs skip worktree - ignoring a symbolic link带有一些上下文修改):

     
      
  • 将存储库的core.sparseCheckout设置为true。
  •   
  • 创建一个包含两种模式的文件.git/info/sparse-checkout*包含所有内容,!/path/to/someFile.txt排除本地文件'someFile.txt'。
  •   
  • 现在,手动将skip-worktree位设置为someFile.txt。
  •   
     

现在你可以继续而不必担心git会自动提交目录,但请注意,如果有人在目录或其中的任何文件中明确运行git add,你仍然会遇到问题。

the man page中的进一步研究似乎表明--skip-worktree更适合被问及的用例。