2009-11-02 141 views
1

我不知道我想要做的是有意義的,但這裏的文件工作樹手動合併文件的解釋是:混帳:HOWTO從從頭部

我產生一些源文件由一個工具,然後改變一點,並承諾。 會發生什麼,有時我需要重新生成這些文件。

我需要手動合併這個新文件和之前提交的文件,並從舊版本中選取哪些部分以及從新版本中取出哪些部分。

有沒有辦法做到這一點?

謝謝!

回答

4

你可以創建一個像「generated_files」這樣的分支,但是當你生成你的文件時,你從來沒有碰過這個分支。

在您的「主」分支中,您可以合併分支「generated_files」。

每次生成新文件時,都必須將其提交到branch「generated_files」中,該分支將從之前生成的版本創建新的delta。

如果你在「master」中的這個分支之後合併,這將只應用來自以前版本的delta,並保留你的修改。

也許你可以在合併過程中使用策略來避免衝突。

+0

很棒的建議。這將會起作用並節省大量時間。謝謝。 – ivans 2009-11-02 09:22:20

+0

現在已經在實踐中對此進行了測試,我需要再次表示感謝。很棒! :) – ivans 2009-11-02 14:39:47

4

試着這麼做:

  • 混帳克隆

  • 的Git分支-a 「TEMP」

  • git的結帳臨時

  • ...生成新的文件.. 。

  • git add 。

  • git的承諾-m 「提交文本」

  • git的結帳主

  • 混帳合併的臨時

從本質上說,做你的東西在另一個分支,並簡單地歸併分支到主分支。

1

這樣做的一種方式,是使-m選項「混帳結賬」使用:

  1. 退房的基地(祖先)的版本,例如,如果你想要做一個三當前版本(HEAD),以前的版本(HEAD ^)和生成的文件(在工作目錄)之間的路合併:

    git checkout HEAD^ 
    

    不要擔心警告有關分離的頭。

  2. 生成文件

  3. 「混帳結賬」 合併來自工作區的變化
  4. 使用-m選項:

    git checkout -m @{-1} # or "git checkout -m <branch>" 
    

git checkout手冊頁:

- m ::
--merge ::

當切換分支,如果你有本地修改的,屬於當前分支,分支到要轉換之間不同的一個或多個文件,命令拒絕切換分支機構爲了在上下文中保留您的修改。但是,使用此選項,當前分支,工作樹內容和新分支之間的三向合併已完成,並且您將位於新分支上。

未經測試!


作爲後備,你總是有git merge-file低電平(水暖)命令。