git 分支包含其他不需要的分支



>管理员告诉我在将它们推送到远程之前不要将 development 合并到我的分支中,并且我应该基于 master 创建新的分支,这样任何来自 development 的代码都不会意外合并到 master 中。好的,这已经工作了几个星期,但是几天前我不小心将开发合并到我的一个分支中。这并没有给管理员带来大问题,他只是告诉我不要再这样做了,但从那时起我开始使用"git branch --contains"来确保。

问题:当我获取远程主站并运行"git 分支 --contains"时,它表明 development 是其中的一部分:

git branch --contains
  develop
* master

这怎么可能??

我看到 3 种可能的解释:

  1. 远程主控在某个时候意外地与开发合并
  2. 一些未知错误
  3. 我没有使用提取的主节点正确更新我的本地分支

  1. 不太可能,因为管理员是一位大师,他不可能让这种情况发生
  2. 是我怀疑正在发生的事情
  3. 可能,但我认为这几周我一直在用这段代码正确完成:

git fetch
git checkout master
git reset --hard origin/master
git clean -f
git pull origin master

因此,只要开发在主中,我就无法创建/推送任何新分支。

知道发生了什么吗?

自上次提交以来,您的本地develop分支可能一直没有更新master。确保您的本地develop分支机构是最新的:

git checkout develop
git fetch
git merge --ff-only origin/develop

了解分支拓扑情况的一个好方法是运行以下命令:

git log --oneline --decorate --graph --all

或者这个,如果你更像是一个GUI人:

gitk --all

您将看到一个显示所有提交的图表,其中彩色标记标记了每个本地和远程跟踪分支的位置。当您有很多分支和复杂的工作流程时,这是跟踪内容在哪里的好方法。

问题是我对git branch --contains的理解。它不列出当前签出分支中包含的分支,而是列出包含它的分支。

所以要知道master是否包含我应该做的develop

git checkout develop
git branch --contains
* develop

所以毕竟没有问题。如图所示,master不是包含develop的分支列表的一部分。

虽然这表明develop确实含有master,但这没关系。

git checkout master
git branch --contains
  develop
* master

相关内容

最新更新