git:更新被拒绝,因为遥控器包含您本地没有的工作

时间:2014-06-23 00:44:20

标签: git version-control merge commit bitbucket

我正在与一些开发人员在BitBucket上使用git的团队合作。我们都在dev分支上工作,而不是在发布之前推送到master

其中一位开发人员提交的错误代码意外地覆盖了我自己,现在我正在尝试将正确的代码推回到repo。我已经阅读了这个错误了几天了,我不能再推送到repo了,因为我收到了以下错误:

 ! [rejected]        master -> dev (fetch first)
error: failed to push some refs to 'https://myusername@bitbucket.org/repo_user/repo_name.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.

我按照说明和pull,但后来收到合并冲突。输入合并冲突的消息后,我的本地代码现在是其他开发人员意外上传的错误代码(正如pull所预期的那样)。所以我用我在提交之前复制的备份替换了错误的代码,当我再次尝试推送时,我得到了同样的错误。

这真的令人沮丧,我真的想帮助我的团队并做出贡献,但我不能因为这个错误。有谁知道如何解决这个问题?我非常感谢任何帮助。

这些是我为了提交而运行的命令,如果它可以帮助任何人:

git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git push remotename master:dev

我原以为如果我遵守这个命令,我就不会收到合并冲突。我想我错了。再次感谢

更新: 我应该补充一点,我已经在Google和stackoverflow上查了几个小时,并遵循了不同的说明,但我仍然无法pushdev分支。

18 个答案:

答案 0 :(得分:43)

在termial

中使用此命令
  

git push -f origin master

答案 1 :(得分:25)

git pull <remote> master:dev将获取remote/master分支并将其合并到您的local/dev分支。

git pull <remote> dev将获取remote/dev分支,并将其合并到您当前的分支中。

我认为你说的是​​remote/dev上的冲突提交,所以这是你可能想要获取和合并的分支。

在这种情况下,您实际上并未将冲突合并到您的本地分支中,这有点奇怪,因为您说您在工作副本中看到了错误的代码。您可能想要查看remote/master中的内容。

答案 2 :(得分:19)

当我们尝试推送到远程存储库但是在远程创建了一个尚未提取的新文件时,就会发生这种情况,比如Readme。在那种情况下,错误说

  

git拒绝更新

因为我们没有在本地环境中使用更新的遥控器。 所以先从远程拉取

git pull

它将更新您的本地存储库并添加新的Readme文件。 然后将更新的更改推送到远程

git push origin master

答案 3 :(得分:5)

我修好了,我不确定我做了什么。 我尝试使用简单的推拉:

git pull <remote> dev 代替 git pull <remote> master:dev

希望如果有人遇到同样的问题,这会有所帮助。

答案 4 :(得分:5)

我已完成以下步骤。终于可以了。

步骤

1)git init

2)git status(用于检查状态)

3)git add。 (添加所有更改文件(。))

4)git commit -m "<pass your comment>"

5)git remote add origin "<pass your project clone url>"

6)git pull --allow-unrelated-histories "<pass your project clone url>"高手

7)git push -u "<pass your project clone url>"主用户

答案 5 :(得分:3)

实际上github比我们想象的要简单得多,并且即使我们在git存储库中明确插入了一些文件之后,只要我们尝试 push ,它就会发生,因此,要解决此问题,只需尝试一下。

:git pull

然后..

:git push

注意:如果您在拉出存储库后不小心卡在了vim编辑器中,那么不必担心,只需关闭vim编辑器并尝试push :)

答案 6 :(得分:2)

这是我解决此问题的方法:

  1. git pull origin master
  2. git push origin master

通常在不更新远程分支时发生。 然后,如果出现类似“请输入提交消息”的错误, 请参阅this(对我来说,xiaohu Wang的回答有用:))

答案 7 :(得分:2)

git pull --rebase origin master

git push origin master


git push -f原始主机

警告 git push -f origin master

  • 强行推送现有存储库,并删除以前的存储库,因此如果您不需要以前的版本,这可能会有所帮助

答案 8 :(得分:2)

我遇到了这个错误,原因是服务器上有更新,但是SourceTree没有显示任何可用的更新(可能是因为我上次检查时它处于脱机状态)。所以我在源代码树中进行了刷新,现在它显示了2个项目而不是1个项目。

因此,如果出现此错误,请务必按 刷新 ,然后重试。

答案 9 :(得分:0)

通常在回购包含本地不存在的某些项目时发生。因此,为了推送更改,在这种情况下,我们需要集成远程更改,然后推送。

因此从远程创建拉动

git pull origin master

然后将更改推送到该遥控器

git push origin master

答案 10 :(得分:0)

我首先有一个SSDT VS项目。我想将项目推进Github。我希望该推送成为我启动master分支的仓库的初始版本。 Donal对 git push -f origin master 的建议是实现此目的的最简单方法。由于我不必担心重写任何东西,所以这似乎很有意义。

答案 11 :(得分:0)

您可以尝试以下操作:git pull origin master --rebase

答案 12 :(得分:0)

强制推动

git push -f原始主机

答案 13 :(得分:0)

您需要输入:

$ git pull
$ git fetch 
$ git merge

如果您使用git push origin master --force,则会遇到很大问题。

答案 14 :(得分:0)

该错误可能是由于您提交的代码和GitHub中存在的代码结构不同而引起的。您可能会参考:如何处理“ refusing to merge unrelated histories”错误:

$ git pull --allow-unrelated-histories
$ git push -f origin master

答案 15 :(得分:0)

对我来说最好的选择,它既简单又有效

git pull --rebase

然后

git push

好运

答案 16 :(得分:0)

您可以使用

git pull --rebase <your_reponame> <your_branch>

这将有助于您在本地存储库中尚未注册某些更改。特别是README.md

答案 17 :(得分:-1)

我有同样的问题。碰巧我没有先拉就在存储库上创建了.Readme文件。

您可能需要删除.Readme文件或将其拉出,然后再进行推送。