Git &引用;分支。。。“未完全合并”;抓取后立即
下面这些对我来说毫无意义Git &引用;分支。。。“未完全合并”;抓取后立即,git,github,Git,Github,下面这些对我来说毫无意义 % git clone $REPO_URL --branch dev wd % cd wd % git fetch origin master:master From github.com:ghuser/someproj * [new branch] master -> master % git branch -d master error: The branch 'master' is not fully merged. If you are
% git clone $REPO_URL --branch dev wd
% cd wd
% git fetch origin master:master
From github.com:ghuser/someproj
* [new branch] master -> master
% git branch -d master
error: The branch 'master' is not fully merged.
If you are sure you want to delete it, run 'git branch -D master'.
请注意,上述错误消息出现在从远程repo获取master
分支后立即出现的git branch-d master
命令上。这是否意味着origin
某种程度上已损坏?我不知道这是怎么发生的。警告
branch is not fully merged
当您试图删除的分支未合并到另一个分支时发生。此警告可避免在合并分支及其更改之前删除它们,从而不会丢失更改
在您的情况下,自收到消息后,您的计算机中似乎没有分支“master”
* [**new branch**] master -> master
因此,当您下载分支master
时,您在dev
上的何处,然后您尝试了git branch-d master
,但从dev的角度来看,它没有被合并,因此您收到了消息
* [**new branch**] master -> master
使用gitk--all
您可以看到整个树,在那里您将看到分支主节点如何不合并到另一个主节点中。这就是信息
如果您仍然想删除它,只需使用-D
命令如果[tip of]A
是B的祖先,那么分支(在您的情况下称之为A,将是“主”分支)被视为“完全合并”到当前签出的分支(在您的情况下称之为B
,将是“dev”)
因此,您得到的错误与您克隆回购协议的方式或获取时间无关。这仅仅意味着“master”具有尚未包含在当前分支“dev”中的提交。删除master分支的目标是什么?当您尝试此操作时,看起来您处于dev
状态。如果master
上的所有提交未合并到dev
,您将得到该错误。@iberbeu:没有目标,我只是想了解发生了什么。所以您真正的问题是“分支未完全合并”是什么意思?”--因为它与上次获取发生的时间无关,所以他在克隆时只显式地获得了dev
分支(这在他的问题中是可见的),然后获得了主分支。然而,他何时何地得到分支与它的“合并”状态无关。这就是我的意思。我不知道哪一个是他的“主”分支。如果他改变了,这个错误发生是正常的,我的困惑来自于将错误消息解释为某种方式防止我以不可恢复的提交的形式丢失工作。这就是为什么情况看起来毫无意义,因为我不可能做出任何改变。加上消息被标记为“error”这一事实,从它的实际含义来看,这似乎太过分了:这就像每次使用rm
时都会有一条错误消息,因为用户可能正在删除一个没有副本的文件。@iberbeu您似乎混淆了“master”通常是“default”这一事实回购协议的一个分支与这里的情况有关。在Git中,所有分支都是相等的;“未完全合并”总是指当前分支。更详细地说,git中甚至没有“默认”分支。Github和其他托管服务使用这个术语,因为它们需要某种默认值来显示repo。Git首先创建了一个名为“master”的分支作为默认分支,但是这个分支没有任何特殊之处,可以简单地重命名。它不必合并到当前签出的分支中。如果任何其他分支B
指向的提交将提交A
指向作为其(直接或间接)父级的提交,则分支A
被视为完全合并。也就是说,如果A
可以被删除,那么您仍然可以使用分支进行提交。确实,感谢您的简单解释。我所要做的就是签出一个分支,其中包含来自“master”的所有提交,并且“error”不见了。