2016-10-13 62 views
1

我們有許多配置文件,其中包含需要爲我們的開發人員環境修改的信息,例如url。我們在git中創建開發環境作爲分支,並對配置文件進行更改。問題是,當我們將開發分支合併回主分支時,它會更改主分支中的配置文件。如何在Git中進行合併而不更改master中的配置文件?

我們想將文件存儲在git中,所以我不相信我們可以使用.gitignore。由於我們使用彈性beanstalk,因此我們需要將所有源代碼保留在回購中,並且每次都需要部署整個源代碼。

我們已經嘗試使用.gitattributes並閱讀很多帖子,例如How do I tell git to always select my local version for conflicted merges on a specific file?,但似乎您在.gitattributes中設置的合併驅動程序只會在兩個文件發生更改時纔會調用。在我們的例子中,我們不會更改主分支中的配置文件,因此從不調用合併驅動程序。

有沒有簡單的方法來做到這一點,而無需編寫腳本?

回答

0

在研究了許多git命令(如rebase和fetch)之後,我找到了一個簡單的方法來完成此操作。只需將分支創建爲孤立分支,將配置文件複製到分支中,然後使用命令「git checkout configs_branch - 。」將配置文件複製到父分支。

所以在細節:

初始化回購網址

git的遠程添加原點(遠程存儲庫URL)

git的回購確保你是在想分支創建分支

創建將包含配置文件作爲孤立分支的分支,所以該分支不包含所有源的

git的結帳--orphan configs_branch

的配置文件複製到回購的這個分支添加的文件,提交和推

的Git添加。

git的承諾-m 「初始提交與配置文件」

混帳推起源configs_url

後從父分支合併操作成功

git的結帳parentbranchname

混帳取--all

將文件從config分支複製到父分支

git的結帳configs_branch - 。

(你仍然是在父分支上面的命令後)

提交文件

git的承諾-m 「重置配置文件」

感謝@vampire您的幫助!

0

解決方法很簡單:不要提交配置文件。

創建一個模板配置文件並提交它。安裝應用程序時,請複製模板並更改需要更改的內容。將真正的配置文件保存在.gitignore中以避免意外提交。

高級用法是創建兩個配置文件:應用程序默認值和本地覆蓋。默認提交,本地覆蓋不提交。這種方法的好處是你只覆蓋你需要的內容並且不指定其他值,所以當默認值改變時,你不必更新你的本地覆蓋配置。缺點是在初始化應用程序時必須加載和合並兩個配置文件。

0

你問的解決方案沒有寫腳本的必要性。我的解決方案包含腳本但是,它們已經寫好了。

1)創建一個自定義合併驅動程序,該驅動程序將忽略相應文件的合併衝突。驅動程序必須在.gitattributes中爲每個文件註冊

2)在該文件中的每次提交時創建合併衝突(否則,合併很瑣碎且不會使用合併驅動程序)。這可以通過.git/hooks/post-commit中的post-commit鉤子完成,該鉤子在每次提交後更改每個分支中的文件。

我在一些腳本中合併:https://github.com/keepitfree/faithfulgit

相關問題