[英]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.