1

当我尝试推送到 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。

4

2 回答 2

2

原因:该错误是由于remote持有比local. 在这种情况下,git 禁止推送到分支,因为 - 将合并什么以及如何以及由谁解决冲突?总要有人负责,存储库不能自己完成这项工作。

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

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

之后,将再次进行快进推送,直到有人再次推送到 master 并且分支再次拥有比您的local.

如何绕过它: ...(部分)...在 Bitbucket 和 Github 上,您可以部署限制以推送到某些分支。这被称为“保护分支”。通过这样做,您可以禁止所有人推送到受保护的分支并在白名单的基础上继续进行。您可以定义推送的限制,例如在此分支上不进行合并提交、合并前的强制拉取请求等。这将阻止人们随机推送到生产分支并排除问题的主要来源。

于 2019-07-22T13:54:20.230 回答
1

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

于 2020-11-22T08:57:42.507 回答