BitBucket - 错误:无法推送某些引用

14

我有一些项目想上传到我的Bitbucket私人资料库。我执行了以下步骤,但出现错误。

  1. 使用以下命令将我的项目转换成Git格式:git init

  2. 接下来:

git add
git commit -m "some message"
  1. 我创建了一个Bitbucket仓库,版本控制系统是GIT。

  2. 然后我输入以下内容(当然要填写实际的账户名、仓库名称以及所有者):

git remote add origin https://<repo_owner>@bitbucket.org/<accountname>/<reponame>.git
  1. 最后,
git push -u origin master

我做了这一切,但我的终端显示了这个错误:

To https://bitbucket.org/milosdev_me/lfs.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://milosdev_me@bitbucket.org/milosdev_me/lfs.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

1
可能是重复的问题:git错误:无法推送一些引用 - Arnaud Claudel
修正一些格式并改善英语。 - rlandster
11个回答

45

尝试:

git push origin master --force

这对我有效。


2
这个运行得很好。但是为什么会出现这个错误? - cbisum
@CB Shrestha:错误通常是由本地仓库和Bitbucket仓库之间的差异引起的。在我的情况下,Bitbucket仓库有一个文件,在我的本地仓库中不存在。 - nambk
1
@CBShrestha - 如果您有一个本地仓库并尝试将其推送到不同的远程名称,则也可能会出现此问题。例如,假设您有一个名为my_cool_branch的本地分支,并执行git push origin my_cool_branch_oops_typo。您可以强制执行此操作,但请务必仔细检查本地和远程分支名称,以确保它是您想要的。 - Noel

7

你的主分支(master branch)有一些代码,但你本地(local)没有,为了避免冲突,在你将这些代码拉到本地之前,它不会让你继续推送更改。要解决这个问题,请将所有更改拉取(pull)到你的本地库(local repository)(即你的项目)中:

git pull origin master --allow-unrelated-histories

接下来,您将拥有在master分支上可用的所有代码。

注意:要小心,从远程分支拉取代码可能会使本地所有更改混乱。确保将这些更改保存在其他地方,或在本地创建另一个分支,在那里您将拉取您的源master分支,以便不会破坏您的更改。


好的,我做了,但是它返回给我```来自https://bitbucket.org/milosdev_me/bpwebsite
  • 分支 master -> FETCH_HEAD 致命错误:拒绝合并不相关的历史```。
- Milos
还是没有任何进展... 哦天啊,我不知道它会这么难。 - Milos
有很多问题,我放弃了。我再也受不了了,我太紧张了。谢谢你的帮助和时间! - Milos
放轻松,通常这些问题都有非常愚蠢和简单的解决方案,你将来会为此而笑。其中一个解决方案可能是从头开始创建一个新的存储库和新项目,然后尝试先推送该空项目。 - zlatan

3
添加--force选项是一个不好的主意
要么将其rebase,要么pull代码,合并它并push它。
git pull --rebase origin master
git push -u origin master

2
您的问题是本地代码库和git代码库之间存在不同(可能是您自动创建的readme文件),因此有两个选项:
1. 使用命令`git pull origin master`,这样您将从git代码库中拉取最新的代码,但会导致合并冲突,您需要使用IDE(推荐给初学者)或通过cmd解决。
2. 使用命令`git push origin master --force`,这样您将强制将本地代码库的代码推送到git代码库中,忽略任何合并冲突并覆盖数据。我不确定,但我认为它将用本地代码库的数据覆盖所有git代码库的数据(这正是您想要的)。

1

如果您已将Bitbucket帐户链接到Jira。

(仅当您将Jira帐户链接到Bitbucket时,此答案适用于您)

我曾经遇到过同样的问题,试图将我的当前分支推送到原始分支。

例如: 我的分支名称是:

feature/PREFIX-000-new-name-branch.

之前的提交:

git commit -m "Write your commit here"

到目前为止还没有生效。

在提交中需要提及票务名称。 如果您已经提交,请使用 --amend 重命名您的提交并重试。

git commit  --amend -m "PREFIX-000 Write your commit here"

请再次尝试推送。


这是我所见过的唯一解决方案,应该被接受为答案。谢谢Antonio! - Mike_H

1
你的远程仓库和本地仓库存在差异,远程仓库中有新内容。因此,在推送之前需要先从远程拉取变更。尝试执行以下操作:
git pull
git push -u origin master

它返回给我这个:提示:更新被拒绝,因为您当前分支的顶端落后于其远程对应物。在再次推送之前集成远程更改(例如 提示:'git pull ...')。有关详细信息,请参见“git push --help”中的“有关快进的说明”。``` - Milos
1
当前分支没有跟踪信息。 请指定您想合并的分支。 有关详细信息,请参见 git-pull(1)。git pull 如果您希望为此分支设置跟踪信息,可以使用以下命令:git branch --set-upstream-to=origin/ master - Milos
那么首先是 git branch --set-upstream-to=origin/master master? 然后是 git pull,最后是 git push - Milos
没有格式问题。我已经做了,但是在git pull之后,它返回fatal: refusing to merge unrelated histories 然后,在git branch --set-upstream-to=origin/master master之后,它返回:分支'master'被设置为跟踪来自'origin'的远程分支'master'。 - Milos
你是指新目录吗?仓库还是其他什么? - Milos
显示剩余4条评论

1
如果您正在使用BitBucket,当我尝试向一个分支推送提交时,如果该分支在仓库设置中被禁止写入,则会出现此问题。

1
问题出在你的远程仓库和本地仓库有差异。我也遇到了同样的问题,尝试了上面提到的所有解决方法,但都没有用。 我的情况是:我已经在远程仓库中有我的分支。如果你也有同样的情况,请按照以下步骤操作:
  1. 运行命令 'git pull'

  2. 从本地仓库中删除分支

  3. 使用“作为新本地分支检出”从远程仓库检出该特定分支。

  4. 运行命令 'git branch -u <your_branch_name>'

  5. 运行命令 'git push' 或 'git push --force'

或者你可以直接从第4步开始尝试,如果不起作用,则按照整个步骤进行操作。希望能帮助到某些人。


0
检查一下你本地分支的名称,因为默认情况下git可能会将其命名为“main”。
Bitbucket使用“master”,所以将你本地仓库的分支从“main”重命名为“master”。
然后运行:
git push -u origin master

-2

这可能是一个配置问题

在将全局 user.email 值更新为我的电子邮件后,我解决了这个问题

git config --global user.email my@email.com

注意:您需要删除先前的提交,因为提交中包含错误的电子邮件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接