![](/img/trans.png)
[英]Git branch --merged / --no-merged and --squash option
[英]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.