GIT 推送分支 B 后创建了新的分支 C

GIT Created new branch C after pushing branch B

我有一个 master 分支。我已经创建了一个分支 B,推送了分支 B,并对存储库进行了所需的更改。 我的同行尚未合并更改。

与此同时,我需要完成另一项任务,我做到了

git checkout master
git checkout -b C   

当我运行git branch --contains时,我可以看到

* C
master
B

为什么我看到 B 分支?我想如果我从 B 创建一个新分支,我会看到 B,即

git checkout B
git checkout -b C  

如果之前的分支尚未合并,并且我想使用新分支处理新任务,避免在新分支中进行不必要的分支更改的最佳方法是什么

几天前我遇到了一个问题,推送的分支更改似乎出现在我的新分支中,我不得不通过将所需的更改再次复制到新分支来解决。

谢谢。

来自the docs for git branch

With --contains, shows only the branches that contain the named commit (in other words, the branches whose tip commits are descendants of the named commit) … If the argument is missing it defaults to HEAD (i.e. the tip of the current branch)

此命令显示包含给定提交的分支。由于您没有提供,您看到的提交包含分支 C.

的提示

由于您没有向分支 C 提交任何新内容,因此分支 C 末尾的提交包含在分支 B 中(实际上它是同一个提交在分支的顶端 B).

它显示分支 B,因为该分支在 master 之前,您从 master 创建了 C,因此您的 HEAD 提交(在未指定提交时使用)在分支 B 内。

http://git-scm.com/docs/git-branch

--contains [] Only list branches which contain the specified commit (HEAD if not specified). Implies --list.