簡體   English   中英

Git,從另外兩個分支(B和C)創建本地分支(A),然后從A到B合並而不包含C文件

[英]Git, create local branch (A) from two other branches (B and C) and then merge from A to B without C files

我開發Magento模塊,我有兩個repos首先是我的模塊,另一個是Magento本身。 我將模塊repo克隆到目錄,然后將Magento repo添加為遠程,並在一個名為testing的本地分支中合並兩個分支。 它工作正常。 但是在開發時我需要在編輯器中打開兩個項目(模塊和Magento),所以我在測試分支中編輯代碼然后我需要提交更改。 但我不能只是將測試合並到模塊分支,因為我在測試分支中有Magento文件,我在模塊分支中不需要。

有沒有辦法將更改從測試合並到模塊分支而沒有來自magento分支的文件?

子模塊和子樹不起作用,因為我的分支與其根目錄重疊,模塊不僅僅是magento分支的子目錄。

謝謝。

您真的想將測試分支合並到模塊分支嗎? 即使您正在尋求合並后Magento文件不會出現,所有Magento歷史記錄將與您的模塊分支歷史密不可分。 這可能不是你想要的。

如果你真的想要合並,你可以編寫自己的合並策略或使用git merge --no-commit ,手動刪除模塊分支中你不想要的Magento文件並提交生成的合並。 如果手動刪除工作太多,您可以使用git revert -n -m1 <unwanted-merge-id>

我建議更清潔的解決方案是挑選並重新創建測試分支 您總是將Magento分支合並到您的測試分支中,我假設您在測試中沒有其他合並。

這個櫻桃選擇(復制到當前分支)來自測試分支的非合並提交列表,因為它與當前分支的共同祖先:

git rev-list --reverse --first-parent --no-merges ..testing | git cherry-pick --stdin

然后你可以擺脫舊的測試分支,因為它包含不必要的合並,其內容與你的模塊分支相同。 您可以在模塊分支上重新啟動它。 從您的測試分支調用git reset --hard module - 但請確保您事先沒有未經修改的更改,因為它們會丟失!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM