1

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

问题:当我获取远程主机并运行“git branch --contains”时,它表明开发是其中的一部分:

git branch --contains
  develop
* master

这怎么可能??

我看到 3 种可能的解释:

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

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

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

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

知道发生了什么吗?

4

2 回答 2

1

自从上次提交develop一直进入master. 确保您的本地develop分支机构是最新的:

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

弄清楚分支拓扑发生了什么的一个好方法是运行以下命令:

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

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

gitk --all

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

于 2013-11-13T20:16:21.730 回答
0

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

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

git checkout develop
git branch --contains
* develop

所以毕竟没有问题。如图所示,master不是包含develop.

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

git checkout master
git branch --contains
  develop
* master
于 2013-11-15T10:41:41.707 回答