簡體   English   中英

如何合並分支與特定提交

[英]How merge branch with specific commit

我以為我為特定的提交創建了一個新分支,但實際上我將其留在master分支上,而在新分支上進行了最新的提交。

所以現在我要刪除master分支上的最后一個提交,並在該特定提交之前將新提交與master分支合並。

用圖像可能更容易理解:

在此處輸入圖片說明

為了將分支合並到現有分支上的“之前”,需要做一些事情。

在Git中,每次提交都在自己的哈希中包含其父哈希,以確保完整性。 這意味着您想要在它們之間合並某些內容的最后一次提交將不得不重命名其他所有內容。

理念

這個想法是將當前的“ master”存儲為一個名為“ old-master”的分支。 我們知道將master設置為所需的提交並進行合並。 然后,我們可以決定恢復舊的主服務器上的提交,而不是新的主服務器上的提交(在您的情況下為f0c5f03),或者只保留它。

$ git checkout master
$ git branch old-master   # let's call our current master in additon "old-master"
$ git reset f2097eb       # reset master (currently checked out) to this commit. See [git reset][1].

您的圖表現在看起來像

  o old-master
/ ^ this is commit f0c5f03
o master
 \
  o - o .... o 12columns

讓我們進行合並:

$ git merge 12columns

就您而言,這是一個快速的前進 因此,不執行任何實際的合並。 我們的圖現在是:

  o old-master
 /
o - ...... o # master

刪除中

現在我們可以決定了。 您要扔掉舊主人還是將其放在頂層:

$ git branch -D old-master   # Remove the old commit f0c5f03

正在恢復

或簽出舊版母版,然后將其重新設置為基礎

$ git checkout old-master
$ git rebase master

結果是:

o - o ...... o - o # master
^ f2097eb        ^ Commit f0c5f03 but now with new commit hash.

暫無
暫無

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

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