2

在我的 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

如何避免这些额外的存储和索引步骤 - 假设不变?有没有办法提取除一个文件之外的所有内容?对于所描述的问题还有其他解决方案吗?

谢谢你

4

1 回答 1

4

据我了解,您想在本地忽略文件(意味着其他开发人员仍将跟踪该文件)因此.gitignore对您没有帮助,因为它的影响是全局的。

但是,如果您将文件添加到.git/info/exclude,它将在本地被忽略。

这句话来自.gitignore

特定于特定存储库但不需要与其他相关存储库共享的模式(例如,存在于存储库中但特定于一个用户工作流的辅助文件)应该进入 $GIT_DIR/info/exclude 文件

于 2013-02-25T17:40:25.130 回答