![](/img/trans.png)
[英]With git, how to force overwrite a file in one branch, from a file in another branch (bypass merge), and commit?
[英]How to force-merge a git branch into another?
我們有兩個分支, master
(穩定/實時)和stage
(測試)。 部署時, stage
將合並到master
並且master
將被部署。
時光倒流有人(當然這不是我的代名詞)僅對master
進行了幾次提交(修補程序)。
現在,當將stage
合並到master
,受那些修補程序影響的文件將不再被合並,它們只會忽略stage
分支中的更改。
這似乎是git工作的方式-順便讓我疏遠了。 我認為cherrypick
荷蘭國際集團的主提交或rebase
荷蘭國際集團,但由於認識不足,不知道任何這會成功-或者如何正確地做到這一點。
合並這些異步文件的最佳方法是什么,以便兩個分支的更改都可以保留下來?
UPDATE
合並確實按預期進行; 我對產生的差異感到非常困惑,直到我最終意識到這只是單向合並。
我看不到如何在master
上創建這些修補程序會成為問題。 在下一個發行版中將stage
合並到master
應該可以正常工作-保留修補程序,並將新的提交應用在它們之上。
但是,您應該做的是將合並master
轉移到stage
以將這些修補程序帶回測試區域。 您的兩個分支將同步,並且一切正常。
我建議重新定基:
git rebase --onto master <hash of the commit before making changes on stage> stage
您可以使用git log
獲取哈希。 開始進行更改之前,需要在stage
分支上進行最后一次提交。
如果您在兩個分支上都修改了相同的文件,則git會要求您解決沖突。 您可以使用git mergetool
或手動執行此操作,然后繼續執行git rebase --continue
。
這會將修補程序添加到stage
分支,然后您就可以將其與master
合並。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.