簡體   English   中英

將我的分支合並到已經與 master 的更改合並的 master

[英]Merging my branch to master which is already merged with changes from master

1.              C
                | 
                B-D-E
                |    my branch
                A
                master
  1. 我通過分支與開發中的更改合並

     C | BDCE | my branch A master
  2. 現在我需要將我的分支合並到 master

這會在 master 中重復提交C嗎?

那么你可以嘗試幾件事:

  1. 將你的分支重新設置為 master - 它應該擺脫 C。在簡單的情況下工作。 如果您將分支與 master 合並,往往會出現問題 - 建議不要混合合並和變基。 在變基之后你需要做一個“git push -f”來強制覆蓋 github,如果其他人正在共享你的分支警告然后不要與你的合並但是從你的最新的(另一種弄亂的方式)如果你不小心)。
  2. (假設您使用的是 PR),完成時擠壓合並 - 此時只有兩個分支之間的差異很重要,並且該分支的歷史將被丟棄。

出於這個原因,我個人更喜歡壁球合並。

在 git 中,分支只是一個指向提交的指針——就像一個標簽,但可以移動。 真正創造歷史的是提交的“父母”。 (為了強調這一點,我故意沒有將下圖中的所有分支都畫成整齊的線條。)

根據您的描述,聽起來您的初始 state 是這樣的(您沒有告訴我們“開發”指向的位置):

      /- C <-[develop]
     /
A - B <-[master]
     \
      \- D - E <-[my_branch]

如果你合並 develop 到 my_branch,默認會創建一個“合並提交”,像這樣:

       [develop]
         v
      /- C -----\
     /           \
A - B <-[master]  \
     \             F <-[my_branch]
      \- D - E --/

將它與另一個合並提交合並到 master 看起來像這樣:

       [develop]
         v
      /- C -----\
     /           \
A - B             \
    |\             F <-[my_branch]
    | \- D - E --/  \
    |                \
     \--------------- G <-[master]

這里沒有重復。 但是也沒有 state 看起來像您在問題中畫的那樣。


如果不是正常的合並,而是將my_branch重新定位到 develop,您會得到這個(請注意,提交 D2 和 E2 是由基於 D 和 E 的重新定位創建的新提交):

       [develop]
         v
      /- C - D2 - E2 <-[my_branch]
     /
A - B <-[master]
     \
      \- D - E <-[abandoned commits]

然后合並到 master 看起來像這樣:

       [develop]  [my_branch]
         v         v
      /- C - D2 - E2 -\  
     /                 F <-[master]
A - B ----------------/ 

暫無
暫無

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

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