gpt4 book ai didi

git - git --no-merged 选项如何工作

转载 作者:太空狗 更新时间:2023-10-29 12:51:40 24 4
gpt4 key购买 nike

git branch -r --no-merged 是如何工作的?

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

那么 cherry-pick 呢?说来自 1 个分支的提交已经被挑选回原始父分支是否足够聪明?

如果一个分支已经被 merge 并且已经添加了新的提交,它会选择那个分支作为没有被 merge 吗?

最佳答案

好吧,老实说,@Hasturkun 的评论说明了一切,但您有 3 个问题:

<强>1。它是否检查一个分支中的所有提交是否已存在于原始父分支中?

不要试图重复 @Hasturkun 引用说:“只列出其提示无法从指定提交访问的分支”。

在这种特定情况下,将提交的 git 树视为管道/地下 map 。您只能从一个节点/站点向后移动到另一个节点/站点。

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

如果在 master 上运行 git branch --no-merge 并获取手册页定义?你能从 master 的 HEAD 到达 G(branchA 的顶端),提交 0 吗?不,你不能,所以 branchA 将被列为非 merge 分支。

如果您从 branchA(提交 G)的 HEAD 运行 git branch --no-merge 怎么样? master 会是一个非 merge 分支吗?不,它被认为是一个 merge 的分支,理解为什么给出前面的例子是微不足道的。

这个例子怎么样?

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

在所有 3 个分支中运行 git branch --no-merged 的​​输出:

master
branchA
branchB
branchA (nothing)
branchB (nothing)

<强>2。那么 cherry-pick 呢?说来自 1 个分支的提交已经被挑选回原始父分支是否足够聪明?

Cherry-picks 创建了一个完全不同的 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
master

<强>3。如果一个分支已经被 merge 并添加了新的提交,它会选择那个分支作为未被 merge 吗?

是的,因为以上所述。

关于git - git --no-merged 选项如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19406988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com