Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git &引用;分支。。。“未完全合并”;抓取后立即_Git_Github - Fatal编程技术网

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”不见了。