[英]How to exclude a particular commit from git merge (forever)
我正在開發一些Web應用程序(php,codeigniter)。 今天是時候把它推向github了,但我遇到了一個我無法管理的問題。
我有兩個分支:
憑證我的意思是:數據庫登錄,密碼,主機,用戶; oauth服務id / secrets; encryption_key。 憑據存儲在/ application / config文件夾中的2個單獨文件中。
我的想法是,我將在dev上進行所有更改,而不是將dev合並到master中,並將master內容拉到github(但master不能包含我的私有憑據)。
這就是我到目前為止所做的事情:
到現在為止它非常酷 - 我的github上的項目代碼沒有憑據。 接下來我需要對我的項目進行一些更改,所以我:
所以現在我需要在dev中進行一些更改,上傳它並拉到github所以我:
我期望發生的事情: Git會問我在'master'中應該使用哪個版本的配置,因為它在兩個分支中都是不同的。 我將使用diff來選擇文件的“主”版本(不包含憑證)。 Git會記住我的選擇,將來我不會再選擇當我將dev合並到master中時。 Git在我的其他項目中就是這樣的,其中dev是一個主分支,而instantions是它的子代(在這種情況下,dev是一個孩子,我將child合並為parent)。
發生了什么: Git只是將憑證從dev復制到master,沒有問我這個問題。 所以現在我的主分支被憑證“污染”,我不能再把它推到github了。
我的問題是:
如果有任何不清楚的地方,請告訴我,任何幫助將不勝感激。
如果主分支中的文件在原始分支后更改為dev,則Git將僅標記沖突,然后在dev中更改相同的文件。
我建議你為你的憑證添加一個.gitignore條目,或者使用ENVIRONMENT變量將它們分開,在codeigniter中這很容易,你所要做的只是你的apache配置(vhost,如果你使用它們)是添加SetEnv APPLICATION_ENV development
然后你可以在application/configs
添加一個名為development
的文件夾,現在當你在開發環境中運行時,這些配置將優先於基本配置目錄中的配置。
這不是關於gitignoring文件,刪除提交,而是良好的文件結構和環境設置,以區分不同的環境,使用development
, staging
和production
(這是默認設置)
否則添加.gitignore行告訴git忽略那些特定文件。
Git ingore會有所幫助。 閱讀此博客文章了解解決方案。
http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/
您可以包含配置文件中的憑據,並將該文件添加到.gitignore
。
配置文件可以包含開發,預生產和生產環境的設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.