请问该怎么git branch -r --no-merged工作的?
它是否检查原始父分支中是否已存在一个分支中的所有提交?
樱桃采摘怎么样?是否足够聪明地说,1分支的提交已经被挑回原始的父分支?
如果已经合并了一个分支并且添加了新的提交,那么它会选择该分支作为未合并的分支吗?
bit*_*oiu 11
嗯,来自@Hasturkun的评论说实话,但你有3个问题:
1.它是否检查原始父分支中是否已存在一个分支中的所有提交?
不要试图重复@Hasturkun引用说:"只列出其提示无法从指定提交到达的分支".
在这种特定情况下,将提交的git树视为管/地下地图.您只能从一个节点/站向后移动到另一个节点/站.
master : - - - -0
\
branchA : E - - - - F - - - - G
Run Code Online (Sandbox Code Playgroud)
如果master你在运行git branch --no-merge并采取手册页定义?你可以branchA从master's HEAD 到达G(尖端),提交0吗?不,你不能,所以branchA将被列为非合并分支.
如果你git branch --no-merge从branchA(提交G)的HEAD 运行怎么样?将master是一个非合并的分支?不,它被认为是一个合并的分支,很容易理解为什么给出前面的例子.
这个例子怎么样?
master : - - - -0
\
branchA : E - - - - F - - - - G - - - Z
\ /
branchB : Y - - - W - - -
Run Code Online (Sandbox Code Playgroud)
运行git分支的输出 - 在所有3个分支中未合并:
master
branchA
branchB
branchA (nothing)
branchB (nothing)
Run Code Online (Sandbox Code Playgroud)
樱桃采摘怎么样?是否足够聪明地说,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
Run Code Online (Sandbox Code Playgroud)
经验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
Run Code Online (Sandbox Code Playgroud)
3.如果已经合并了一个分支并且添加了新的提交,那么它会选择该分支作为未合并的分支吗?
是的,因为上述所有内容.
| 归档时间: |
|
| 查看次数: |
3721 次 |
| 最近记录: |