簡體   English   中英

x 在 master 后面提交,如何在分支上不合並 master

[英]x commits behind master, how to do without merge master on branch

我正在使用 git 來維護我的代碼,現在我基本上有 3 個分支:

  • master(受保護,無法直接編輯)

  • 開發

  • 發布版本(可以是 v1、v2 等)

很久以前,我在 master 上進行了一次合並,我通過接口恢復了(僅在 master 分支上),但現在我的開發分支總是在 master 后面 10 次提交,但我不能將 master 合並到開發中,因為它會導致代碼回歸。

如何在開發時重置這些提交? 有沒有辦法“取消”這些在 master 上的提交? 或者一種基於當前開發狀態重置主人的方法?

謝謝

這里可能存在更大的問題(因為您有一個還原的合並,如果將來您想將這些提交的更改重新合並到master中,這將成為障礙)。

也就是說,讓ours不說你落后於master而不會影響develop分支的內容的最簡單方法是使用ours合並策略進行合並(不要與可以給予默認合並策略)。

git checkout develop
git merge -s ours master

在紙面上,這告訴develop developer 並沒有真正落后於master ,那個master只是包含與 development 永遠不會相關的develop

這樣做的缺點是它“隱藏”了合並中的更改。 一些命令(可能還有一些開發人員)假設如果合並提交的父級可以使用默認的合並策略在沒有沖突的情況下被合並,那么這就是發生的事情 - 所以像這樣的合並,打破了這個假設有時被稱為“邪惡合並”。

另一種選擇是提前develop並將master合並到 development 正常,但然后恢復合並。

git checkout develop
git merge master
git revert -m1 HEAD

我知道這聽起來讓我提出的第一個問題更加嚴重,但這是一種罕見的情況,即兩個錯誤可能成為正確。 這里的優點是(粗略地說)在將來的某些合並中再次將develop歷史與master結合起來,git 將看到在master上恢復之后develop的恢復(更改的重新恢復) - 所以合並將表現得像你期望的那樣。 而且您沒有任何“邪惡”(或其他奇怪的)合並。

暫無
暫無

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

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