2014-12-10 53 views
-1

我有以下分支設置的應用程序:分公司具體設置文件的Git(集線器),將不合並

  • 生產
  • 分期
  • DEV-一個
  • 開發-B
  • DEV-C(等)

有某些設置特定於每個分支(一個文件d部署環境)。我希望這些文件保持在版本控制中(所以我可以在特定的分支上進行更改並推送等),但是我希望能夠在分支之間合併(或重新分配),而不會將這些文件拉入合併中 - 。

例如,假設production具有config.txt與:

key=production-api-key 

staging和具有與config.txt

key=staging-api-key 

等等等等。如果我在分段中更改任何文件,請推送到GitHub,打開PR,然後合併,我想config.txt在合併中被忽略。另外,如果我在staging上更改config.txt,然後推送給GitHub,並且該項目上的其他開發人員進行了更改,我希望他們看到我推送到staging分支的config.txt的新修改版本(顯然只有在staging科)。

.gitignore不是我在這裏尋找的,看到這將忽略所有分支的任何變化,並且無論我擁有的文件的本地版本將永遠是什麼在使用中,以及任何變化當其他開發人員嘗試將更改提交給特定分支時,我對它們做出的反應將不會被反映出來。

我使用git update-index --assume-unchanged config.txt認爲,雖然這將允許在每個分支不同版本的config.txt(假設我犯運行--assume-unchanged之前的變化),它不會讓我更新文件,如果我打開一個PR,這些變化都合併了。

有什麼建議嗎?

+1

不要使用--assume-unchanged。它意味着不同的東西。這意味着你向Git保證它不需要浪費統計週期來檢查變化(它最終會)。鑑於對其使用的誤解,文件正在更新以更清楚地說明這種區別。嘗試使用gitignore或排除功能,然後僅在提交時追蹤/追蹤。 – 2014-12-11 15:45:23

回答

0

.gitignore通常在每個分支上作爲文件結構的一部分提交,因此每個分支中可以有不同的忽略列表,就像每個分支中有不同的代碼一樣。你只需要記住適當設置忽略列表(或者註釋掉不需要的)。

+0

這是每個分支中的同一個文件,我需要各個分支機構知道它們的版本(它們會有所不同)。即使我.gitignore文件(在提交初始版本之後),然後對其進行更改並切換分支,所有分支都將擁有這個新修改的版本,而不是它們自己的版本。 .gitignore阻止我對我的個人分支(我希望能夠做到)進行更改,並堅持我在分支之間做出的任何更改(我不希望發生這些更改)。 – paradox870 2014-12-12 18:55:55

+0

僅僅因爲它是相同的文件,並不意味着你不能在每個分支中有不同的.gitignore文件。當您更改分支時,您可能需要從索引中「解除」文件的範圍,然後添加/統計相關的(將基於.gitignore)。一個簡單的別名可以將它們全部掛起來。 – 2014-12-12 20:17:36

+0

oops刪除了兩條記錄(Chrome手指故障) – 2014-12-12 20:28:18