簡體   English   中英

如何在回購中獲取文件忽略本地更改

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM