簡體   English   中英

如何將一些已發布的提交(包括合並)移動到分支並在以后合並回去

[英]How to move some published commits including a merge to a branch and merge them back later

我有一個看起來像這樣的歷史:

A-B-C-----------M-I-J-K-L
     \         /
      D-E-F-G-H

主機當前指向L。這已被推到原點。

我想創建一個包含D到L的新分支,並擁有指向C或與C匹配的簽入的主節點(起源),我需要確保其他克隆所做的任何事情都不會中斷。 然后在以后的某個時刻,我想將D到L合並回master並推送到原點。

我看過使用還原,但看起來會影響以后合並的內容。 有辦法做到這一點,我很困惑。

首先從L創建一個新分支,以便您獲得參考

git checkout master
git checkout -b thisIsL

現在更改主deadbeef以指向特定的提交deadbeef ,以獲取更好的十六進制值

git branch -f master deadbeef
git push --force origin master

(請參閱此答案 。)

但是,這很可能會破壞遠程服務器上的任何其他克隆(任何時候將rebase-force標志用於推送的提交時,都可能是這種情況)。 因此,首先要使其他所有人都付出一切,並准備從新克隆開始(如果最終他們需要這樣做)。

所以這是我所做的,我不知道這是否是最好的解決方案:

  1. 在師傅上,我確保我的工作樹沒有顯着變化。
  2. 我使用xcopy來復制整個工作樹。
  3. 我使用git revert來創建簽入,該簽入可以撤消我不希望在master中進行的所有更改。
  4. 我推送了還原提交
  5. 我創建並簽出了最新提交的分支。
  6. 我從備份中復制了所有文件。

這樣一來,我就可以在分支上進行所有更改了。 它也許使歷史有些松散,但我認為它將在以后正確地合並。

暫無
暫無

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

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