2016-07-08 59 views
1

我對git機制有點困惑。保持git合併的一些變化

我的工作有3個分支masterdevelpublic。我使用master將我的Node.js應用程序部署到OpenShift(或heroku)中; devel是我開發我的功能的地方,我使用public將我的開源代碼推到GitHub上。

每次我必須在OpenShift上部署我的應用程序,我只需從devel合併到master然後按下即可。 同爲GIT中,我瑪吉從develpublic

問題是:例子。我有一個文件,index.html女巫有一小段代碼用於私人Google分析。或者前。我需要部署masterpublic

問題是一些文件,但我怎麼能保持的代碼和文件這一片段在master但不是在public

我想過2(非工作)策略:

1)摘錄\文件中不存在的devel但存在於master - >我合併develmaster - >片斷\文件從被刪除掌握

以這種方式我很好public(因爲將不包括私人片段\文件),但我不精與master

2)片段\文件都存在於devel - >如果我合併develmaster我很好,我部署在OpenShift上,因爲包含了snippet \ files。

但合併develpublic - >現在public有我的私人文件。

Gitignore文件不能幫助我,因爲分支之間共享,如果我忽略我的私人文件,他們也會在我的master部署中被忽略。即使如此,這也無法解決片段問題。

TL.TR。我怎樣才能合併2分支保持一些文件\代碼的一部分未合併?可能以一種簡單的方式,因爲我必須爲許多文件做這個。

或者,我如何改變我的分支策略來實現這個目標?

+0

我想我達到了解決方案。在使用git系統時是個錯誤。 'devel'最初有'master'部署中使用的seme code \文件。現在,刪除乾淨的'devel'分支的這些信息,'master'中的mergin也會刪除這些信息。解決方案(非常愚蠢,我知道)重寫了'master'中的文件和有用的片段。直到現在,即使這些信息不再出現在'devel'中,即使從'devel'合併,master也會繼續擁有它們。我是新來的混帳,我有點困惑:)我只是認爲snippets \文件將總是刪除合併! – rEDSAMK

回答

1

我發現了一個網站,知道如何做到這一點。您可以使用excludesfile用於不同的分支機構。

這裏是如何做到這一點:

$ git branch public_viewing 
$ cd .git 
$ touch info/exclude_from_public_viewing 
$ echo "path/to/secret/file" > info/exclude_from_public_viewing 

然後編輯的.git/config文件,並添加:

[core] 
excludefile = +info/exclude 

[branch "public_viewing"] 
excludefile = +info/exclude_from_public_viewing 

使用這種方法,一切所有的公共文件都在info/exclude_from_public_viewing和個人在info/exclude

該網站可以在這裏找到:http://cogniton-mind.tumblr.com/post/1423976659/howto-gitignore-for-different-branches

+0

我在另一篇文章中發現了這種方法,但似乎不工作(也許版本問題,該文章是2010年)。問題是,即使這項工作(無論如何都不錯)不會完全解決問題,因爲我想更新我的index.html(不要忽略它),只是讓一部分代碼在合併時不受影響。但非常感謝,無論如何,讚賞:) – rEDSAMK

1

你可以改變你的分支策略,以實現這一目標。我假設你們所有的公共代碼也應該出現在你的主分支中。

你可以有4個分支(而不是3個),例如。 master, dev-master, public and devel

  • 你應該做的大部分的開發(除私人文件)對devel分支,只要你想將它合併到dev-masterpublic。由於它沒有任何私人文件,因此不會合併到public分支。
  • 當你想寫你的私人代碼時,只需將你從devel轉到dev-master,然後開始寫你的私人代碼,然後在這裏測試你的功能。一旦一切正常,合併dev-mastermater分支。

通過這種策略,您還可以測試代碼是否帶有私有文件,這將有助於維護代碼庫。

我不確定這是否是最佳策略。我希望這可以幫助你 !!!

+0

您的分支機構的戰略是非常好的,我現在切換到您的建議!這實際上有利於更好地將代碼庫與生產部分分開。但我想我找到了解決我的問題,只是使用git rm和commit的錯誤。我會在我的第一篇文章中更好地解釋它(可能對某個人來說是有用的) – rEDSAMK

+0

忘記非常感謝你的建議,讚賞 – rEDSAMK

+0

我很高興它幫助你決定你的分支策略。請將此答案標記爲已接受:) – Vinay