[英]Git: How to manually manipulate/craft a merge between two branches when no conflict occurs
假設有一個功能分支,我們將其稱為分支A
分支A
包含三個文件: A1
(index.html), A2
(main.css)和A3
(script.js)。
從分支A
創建/簽出分支B
,得到B1
, B2
和B3
。
現在,假設B1
- B3
所有內容都被完全刪除並且編寫了完全不同的代碼,然后提交給分支B
假設分支B
所有文件的新代碼最終將需要作為其子集集成到原始代碼中。
我希望能夠通過簽出分支A
並運行git merge B
來實現將B
代碼集成到A
代碼中。 我以為這會給我帶來合並沖突,我可以用它來制作新版本的A1
- A3
提交到分支A
但是,Git沒有產生預期的合並沖突,而是用B
代碼完全替換了所有A
代碼。
這兩個分支的代碼如何集成?
我意識到一個人可以從B
文件中復制代碼,然后將其粘貼到A
文件的代碼中,而A
一切都在Git之外。 但是,我認為這不是一個理想的解決方案,因為項目歷史不會反映出以下事實: A
代碼中的某些來自B
如果分支A
上沒有新提交,則分支B
是A
的后代。 因此,合並(默認情況下)是作為快進完成的,即,僅A
設置為B
不會生成任何明確的合並提交。 (您可以使用git merge --no-ff
選項生成一個顯式的合並提交。)
合並的想法是將所有新更改集成到舊狀態。 如果更改是用完全不同的方式替換一個文件的內容,則可以通過在分支A
上完全執行此操作來集成更改,這將產生新的內容。
我目前無法想到這不是您想要的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.