簡體   English   中英

git --no-merged選項如何工作

[英]How does git --no-merged option work

git branch -r --no-merged工作的?

它是否檢查原始父分支中是否已存在一個分支中的所有提交?

櫻桃采摘怎么樣? 是否足夠聰明地說1分支的提交已經被挑回原始的父分支?

如果已經合並了一個分支並且添加了新的提交,那么它會選擇該分支作為未合並的分支嗎?

嗯,來自@Hasturkun的評論說實話,但你有3個問題:

1.它是否檢查原始父分支中是否已存在一個分支中的所有提交?

不要試圖重復@Hasturkun引用說: “只列出其提示無法從指定提交到達的分支”。

在這種特定情況下,將提交的git樹視為管/地下地圖。 您只能從一個節點/站向后移動到另一個節點/站。

master    : - - - -0 
                    \   
branchA   :          E - - - - F - - - - G

如果在master運行git branch --no-merge並進行手動頁面定義? 你能從master的HEAD到達G( branchA的尖端),提交0嗎? 不,你不能,所以branchA將被列為非合並分支。

如果從branchA (提交G)的HEAD運行git branch --no-merge怎么樣? master會不會成為非合並分支? 不,它被認為是一個合並的分支,很容易理解為什么給出前面的例子。

這個例子怎么樣?

master    : - - - -0
                    \   
branchA   :          E - - - - F - - - - G - - - Z
                               \                /
branchB   :                     Y - - - W - - -

運行git分支的輸出 - 在所有3個分支中未合並:

master
  branchA
  branchB
branchA (nothing)
branchB (nothing)

櫻桃采摘怎么樣? 是否足夠聰明地說1分支的提交已經被挑回原始的父分支?

Cherry-picks創建了一個完全不同的commitId,因此我只在必要時才使用它們。 由於它創建了完全不同的提交,因此樹將有所不同:

看看我剛做的這個實驗,考慮master和branchA相同:

經驗1)使用合並

(master)$ touch empty && git add . && git commit -am "File Added"
(master)$ checkout branchA
(branchA)$ git branch --no-merged
  master
(branchA)$ git merge master
(branchA)$ git branch --no-merged
  // outputs nothing

經驗2)使用櫻桃挑選

(master)$ touch empty && git add . && git commit -am "File Added"
(master)$ checkout branchA
(branchA)$ git branch --no-merged
  master
(branchA)$ git cheery-pick <commitID from above>
(branchA)$ git branch --no-merged
  master

3.如果已經合並了一個分支並且添加了新的提交,那么它會選擇該分支作為未合並的分支嗎?

是的,因為上述所有內容。

暫無
暫無

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

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