尝试推送到 Bitbucket 时无法推送错误

Failed to push error when trying to push to Bitbucket

当我尝试推送到 Bitbucket 时,我不断收到以下错误。我以前工作得很好,现在就停止工作了。

有人可以帮我理解这是什么意思以及如何解决吗?

Pushing to https://x-token-auth@bitbucket.org/UserName/project-name.git
To https://bitbucket.org/UserName/project-name.git
 = [up to date]      Redesign -> Redesign
 = [up to date]      Version4.0 -> Version4.0
 = [up to date]      version2.0 -> version2.0
 = [up to date]      version3.0 -> version3.0
 = [up to date]      version3.2 -> version3.2
 = [up to date]      version4.1 -> version4.1
 = [up to date]      version5.0.3+cocoapods-firebase -> version5.0.3+cocoapods-firebase
 = [up to date]      version5.1 -> version5.1
 = [up to date]      version5.2 -> version5.2
 = [up to date]      version5.3 -> version5.3
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://x-token-auth@bitbucket.org/UserName/project-name.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

仅供参考 - 我不确定如何按照错误中的建议使用 git pull。另外,我使用 git-tower 作为我的 git GUI。

原因: 错误的发生是因为 remote 拥有比 local 更新的 master 版本。在这种情况下 git 禁止推送到分支,因为 - 将合并什么以及如何以及由谁解决冲突?总得有人负责,仓库不能自己做这个工作。

Git 强制您首先 pull - pull 等同于 fetch+merge - 因此您收集最新版本的代码以您的 local 并通过这样做继承了合并您的代码并解决您通过编写代码创建的合并冲突的责任。否则有可能将它们卸载到 remote 并留下一个没有所有者的烂摊子。

做什么: git pull。您将收到一条消息,要求您进行合并。如果发生合并冲突,您将被要求使用您选择的任何工具来解决它(我想 git 塔在您的情况下)。

在那之后,快进推送将再次成为可能,直到有人再次推送到 master 并且该分支再次拥有比您的 local.

更新的通用代码库版本

如何绕过它:...(部分)...在 Bitbucket 和 Github 上,您可以部署限制以推送到某些分支。这叫做'protecting branches'。通过这样做,您可以禁止所有人推送到受保护的分支并在 white-list 的基础上继续。您可以定义推送限制,例如在这个分支上没有合并提交,合并前强制拉取请求等。这将阻止人们随机推送到生产分支并排除问题的主要来源。

你可以试试git push -u origin master--force