在我的Git仓库中,有一个配置文件,我想与主要的共享仓库保持不同(它必须保持跟踪),因此更改不会填充给其他开发人员。但是,'--assume-unchanged'可以在将代码推送到其他存储库的同时在本地保留我的更改。问题变成了,当我需要获取最新代码并且我从共享仓库中拉动或合并到我的本地时,我得到错误:
error: Your local changes to the following files would be overwritten by merge:
app/grails-app/conf/BuildConfig.groovy
Please, commit your changes or stash them before you can merge.
Aborting
错误是有道理的,因为我的配置文件与我正在合并的共享仓库中的配置文件不同。但是如何在保持这种配置不同的同时获得拉(合并)最新代码。我想避免解决这个问题:
git update-index --no-assume-unchanged app/grails-app/conf/BuildConfig.groovy
git stash save "config file"
然后在合并后获取我更改的配置:
git stash apply
如何避免这些额外的存储和索引步骤 - 假设不变?有没有办法拉除一个文件?描述问题的任何其他解决方案?
谢谢
答案 0 :(得分:4)
根据我的理解,您希望在本地忽略文件(意味着其他开发人员仍将跟踪该文件)因此.gitignore
将无法帮助您,因为它的效果是全局的。
但是,如果您将文件添加到.git/info/exclude
,它将在本地被忽略。
这句话来自.gitignore:
特定于特定存储库但不需要共享的模式 与其他相关的存储库(例如,存储在存储库中的辅助文件) 但是特定于一个用户的工作流程)应该进入$ GIT_DIR / info / exclude文件