我一個簡單的CMS年前寫的,現在我有多個分支,該CMS和我想更新,從各分公司使用,而不是從版本由於更改文件1.是否可以更新git版本控制中所有分支中的文件?
那麼,如何可以更新該文件並告訴所有分行這樣做?
我一個簡單的CMS年前寫的,現在我有多個分支,該CMS和我想更新,從各分公司使用,而不是從版本由於更改文件1.是否可以更新git版本控制中所有分支中的文件?
那麼,如何可以更新該文件並告訴所有分行這樣做?
取決於您的優先級。
由於該文件以前從未更改過,因此它首次添加的提交應該是一個合適的「通用根」,您可以在其中創建一個新分支以應用更改;然後將其合併到所有分支。這種方法最能反映項目的真實歷史。
當然,不利的一面是它有很多合併操作。如果有很多分支機構,則應用所有合併可能非常繁瑣(儘管您可以自動化它,依賴於您正在修改一個永不改變的文件的想法,因此您不應該發生任何衝突)。這些合併也被添加到每個分支的歷史記錄中。對我來說這不是一件壞事 - 它又是準確的歷史 - 但有些人不喜歡「複雜」的提交拓撲;所以這是你可能要考慮的事情。
另一種選擇是重寫歷史記錄。這有幾個潛在的缺陷。所有的提交ID值都會改變。如果您在任何工具或文檔中使用提交ID,則可能是一個問題。如果還有其他用戶使用回購克隆,他們將不得不從基本上大量的「上游基準」狀況中恢復過來。再加上你重寫的歷史記錄並不能反映代碼在歷史上的任何時刻的樣子。但是如果你不關心這些事情,那麼這更容易做,並避免改變提交拓撲。
所以最簡單的方法就是用filter-branch
。
git filter-branch tree-filter='cp /some/path/to/new/version worktree/path/to/old/version' -- --all
你也許可以找出一種方法來使用index-filter
代替tree-filter
,這將是更快 - 但不是很容易。
您應該創建一個新分支來對文件進行更改。然後,您可以將該分支合併到所有其他分支中。這會將新分支中的所有更改添加到合併它的每個分支。
該分支應該從最早的常見提交開始。 – Philippe