我在远程存储库中有一些文件(即某些版本文件),以后的提交不应该更改这些文件。有没有办法确保提交到此文件的未来用户将无法覆盖远程文件,但仍能够推送。有没有比使用githooks更容易的方法呢?我不想创建撤消用户在githook中更改的提交。有没有更简洁的方法呢?
答案 0 :(得分:5)
我认为根据你的需要你需要的是(我可能在这里错了)是: -
暂时忽略某个文件中的更改:运行
git update-index --assume-unchanged <file>
然后,当您想再次跟踪更改时:
git update-index --no-assume-unchanged <file>
http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html
这会将文件保留在您的git仓库中。在该文件中进行的任何本地更改都将无法添加,提交并推送到远程仓库。
答案 1 :(得分:0)
如果您使用pre-receive
挂钩,则无需创建其他提交来撤消用户的更改。此挂钩允许您检查正在推送到您的仓库的更改,如果他们对禁止的文件进行更改,则拒绝它们(全部或全部)。或者,如果您希望仅跳过对该文件的更改并允许推送其他更改,请使用update
挂钩仅拒绝对禁用文件的更改,同时允许其他更改。 (但这会破坏其推送的事务完整性,因此您可以假设其他更改不会依赖于他们尝试对禁用文件所做的更改。)