我的仓库中有一个文件,我已将假设未设置的位设置为:
git update-index --assume-unchanged someFile.txt
有一段时间,在对repo进行一些工作后,该位未设置,文件自动不再是assume-unchanged
。
谁在接触它?在明确告诉git之前,我怎样才能使这个永久化:
git update-index --no-assume-unchanged someFile.txt
这里发生了什么?
编辑:我在本地更改的配置文件上使用假设未更改的位,并且永远不应该提交,更不用说上推了。我不希望在git status
或其他任何地方看到它们,除非我明确告诉git我想编辑并提交其中一个。
编辑:好的,我想我设法重现了这个问题。
我从不同的仓库(没有--assume-unchanged
)提交了该文件,拉回了我的仓库,果然,该位被重置了。
因此出现了两个问题:
答案 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
更适合被问及的用例。