获取后立即"分支......未完全合并"

kjo*_*kjo 6 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 sure you want to delete it, run 'git branch -D master'.
Run Code Online (Sandbox Code Playgroud)

请注意,在从远程仓库获取分支后立即发生的git branch -d master命令上会出现上述错误消息.这是否意味着以某种方式损坏了?我无法弄清楚这是怎么发生的.masterorigin

ibe*_*beu 7

警告

branch is not fully merged
Run Code Online (Sandbox Code Playgroud)

当您尝试删除的分支未合并到另一个分支时.此警告可以避免在合并之前删除分支及其更改,因此您不会丢失更改.

在您的情况下,看起来您的计算机中没有分支"master",因为您收到了消息

* [**new branch**]      master     -> master
Run Code Online (Sandbox Code Playgroud)

所以,当你下载分支时,master你在那里dev尝试git branch -d master但是因为它没有从dev的角度合并你得到了消息

有了gitk --all你可以看到整个树,在那里你会看到怎样的分支主就不会合并到另一个.因此消息.

如果您仍想删除它,只需使用该-D命令

  • 好吧,我的困惑来自解释*错误*消息,以某种方式阻止我以不可恢复的提交形式丢失工作.这使得情况看起来不那么敏感,因为我不可能做出任何改变.此外,消息被标记为"错误"这一事实,根据实际意义而言似乎过分:这就像每次使用`rm`时都会出现错误信息,因为有人可能正在删除一个没有重复的文件的. (2认同)

Nev*_*nel 7

一个分支(称之为A,在你的情况下将是'master')被认为是"完全合并"到当前检出的分支(称之为B,在你的情况下将是'dev')如果[tip] A是一个祖先的B.

因此,您获得的错误与克隆回购或获取时的方式无关.它只是意味着'master'具有尚未包含在当前分支'dev'中的提交.

  • 它不必合并到当前签出的分支中.如果*any*其他分支`B`指向具有提交"A"指向其(直接或间接)父代的提交,则分支"A"被认为是完全合并的.即如果`A`可以被删除,你仍然有办法使用分支进入提交. (2认同)