[英]How to get files on repo ignore local changes
我的Bitbucket存储库中有几个文件是配置文件,但是其中包含要上线的配置信息,但是本地配置使用了完全不同的一组规则,但是我搞砸了几次,添加了更改的规则并推送了他们和它成为一个问题。
有什么办法可以在仓库中放置文件,并且不能覆盖,触摸/添加或推送文件。
类似于git update-index --assume-unchanged
没有一种可靠的方法将文件保留在存储库中,而忽略对该文件的本地更改。 最好的解决方案是安排构建过程,以便(a)在工作树之外引入局部差异,或者在(b)不在源代码控制中保留的文件中引入局部差异,因此可以使用.gitignore
排除。
例如,假设您有一个文件app.config
。 它需要本地构建中的一组值和生产服务器上的一组不同值(或在不同服务器环境中甚至可能需要更多组值)。 假设源代码控制中的当前副本如下所示:
db-server = devdb.mydomain.com
db-user = svcDevDb
db-password = s3cr3t
您可以执行以下操作:
app.config
: git rm --cached app.config
app.config
添加到您的.gitignore
文件 app.config-template
,其中包含占位符,表示在环境之间会有所不同的值 这可能看起来像
db-server = ${db-hostname}.mydomain.com
db-user = ${db-user}
db-password = ${db-password}
...
$ mkdir propfiles
$ cat > propfiles/dev
db-hostname = devdb
db-user = svcDevDb
db-password = s3cr3t
app.config
; 这将成为您构建过程的一部分。 (这似乎让我难以理解,但任何体面的构建框架都应该为您执行此操作,或者拥有一个可以执行此操作的插件。) 因此,您add
这些更改并commit
。 现在,当您为dev
环境进行构建时,可以指定应从propfiles/dev
获取值。 对于本地构建,您可以创建自己的local
文件。 您可以将其存储在工作树之外,也可以将propfiles/local
添加到.gitignore
。 您可能会创建用于源代码控制的local-defaults
属性文件,目的是人们将其复制并编辑副本以制作自己的本地属性文件。 但是关键是本地更改不会直接对源代码控制中的文件进行。
这也意味着您的生产属性文件可以不受源代码控制,并保持在安全的环境中(例如,并非每个人都可以完全访问的构建服务器)。 在我们的示例中,配置文件包含一个密码,因此,使生产密码(以及您本地文件中的个人密码)不受源代码控制的好处,甚至比避免在本地意外更改本地配置更改的麻烦更有价值。这个案例。
还有其他解决方案,细节总是可以变化的。 但是重点是,比起源代码控制问题,解决作为构建问题要好得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.