Git分支突然成为master

Pet*_*kin 1 git bitbucket

我很想了解发生了什么。我们创建了一个 git 分支,工作完成后我们创建了一个 PR,一切顺利。然后在本地我将分支更改为master并再次开始工作。然后我意识到 PR 已将所有提交“删除”,现在 master 等于创建的分支!我们在 BitBucket 中有一个设置,禁止对 master 分支进行任何更改,我想知道它发生了什么以及如何发生。

在此输入图像描述 在此输入图像描述

根据评论更新:

  1. 我们使用的策略是“挤压,仅快进”
  2. 我让一个人将“master”合并到分​​支中,但看起来 master 已合并到分支中。通过设置可以吗Prevent changes without a pull request
  3. 为了解决这个问题,我从 master 创建了一个新分支。恢复所有更改,创建 PR,合并该 PR。现在主人看起来应该是这样,但是!我打开那个歪歪扭扭的 PR,我看到的是Shchukin, Petr remotely merged the pull request from xreg-3170/Link-foreign-key-transfer-institution-mapping-and-sis-integration-table-by-grantee-tenantId to master我是如何远程合并那个分支的?

Sch*_*ern 5

这看起来像是快进。如果分支是 master 的简单后代,Git 将选择这种合并策略。无需合并。

例如,假设您的存储库如下所示。

A - B - C - D [master]
             \
              E - F - G [branch]
Run Code Online (Sandbox Code Playgroud)

当您将分支合并到主分支时,不需要合并。Git 只是将 master 移动到分支所在的位置。

$ git merge branch

A - B - C - D - E - F - G [master]
                          [branch]
Run Code Online (Sandbox Code Playgroud)

Bitbucket 将此作为合并策略提供。这可能是默认的

我更喜欢禁止快进并始终需要合并提交。这清楚地表明工作是作为一个单元完成的,并且它提供了一个记录 PR 和问题 # 供以后参考的地方。

$ git merge --no-ff

A - B - C - D --------- M [master]
             \         /
              E - F - G [branch]
Run Code Online (Sandbox Code Playgroud)

然后我意识到 PR 已将所有提交“删除”......

我没有使用过 BitBucket,但这是我的猜测。由于 master 和 PR 分支现在处于同一提交,因此没有差异。BitBucket 正在传达这一信息,因为之前的差异已被“删除”。

BitBucket 知识库如何查找拉取请求更新中所有添加或删除的提交?这可能有助于验证发生了什么。