git branch -r --no-merged是如何工作的?
它是否检查一个分支中的所有提交在原始父分支中是否已经存在?
那樱桃采摘呢?说来自1个分支的提交已经被选回了原始的父分支,这足够聪明吗?
如果已经合并了一个分支,并且添加了新的提交,那么它是否会选择该分支作为未合并的分支?
发布于 2013-10-17 01:14:41
老实说,@Hasturkun的评论说明了一切,但你有3个问题:
是否检查一个分支中的所有提交在原始父分支中是否已经存在?
不要试图重复@Hasturkun引用:“只列出那些提示不能从指定的提交到达的分支”。
在这种特定情况下,可以将提交的git树视为管道/地下映射。您只能从一个节点/工作站反向移动到另一个节点/工作站。
master : - - - -0
\
branchA : E - - - - F - - - - G如果在master上运行git branch --no-merge并采用手册页面定义?你能从master的头部到达G(branchA的尖端),提交0吗?不,你不能,所以branchA将被列为非合并分支。
如果您从branchA(提交G)的头部运行git branch --no-merge会怎么样?master会是一个非合并的分支吗?不,它被认为是一个合并的分支,很容易理解为什么之前给出的例子。
这个例子怎么样?
master : - - - -0
\
branchA : E - - - - F - - - - G - - - Z
\ /
branchB : Y - - - W - - -运行git分支的输出--在所有3个分支中不合并:
master
branchA
branchB
branchA (nothing)
branchB (nothing)2.那樱桃选择呢?说来自1个分支的提交已经被选回了原始的父分支,这足够聪明吗?
精挑细选创建了一个完全不同的commitId,所以我只在必要的时候才使用它们。由于它创建了一个完全不同的提交,因此树也会有所不同:
看看我刚刚做的这个实验,考虑一下master和branchA是一样的:
经验1)使用merge
(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)使用cherry-pick
(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
master3.如果分支已经合并,并且添加了新的提交,它是否会选择该分支作为未合并的分支?
是的,因为上面所说的一切。
https://stackoverflow.com/questions/19406988
复制相似问题