git:更新被拒绝,因为远程包含您在本地没有的工作

git:更新被拒绝,因为远程包含您在本地没有的工作,git,version-control,merge,commit,bitbucket,Git,Version Control,Merge,Commit,Bitbucket,我在一个团队中工作,有几个开发人员在BitBucket上使用git。我们都在开发一个dev分支,在发布之前不推到master 其中一个开发人员犯了错误的代码,意外地改写了我自己的代码,现在我正试图将正确的代码推回到repo。我已经读了几天关于这个错误的书,我不能再推进回购了,因为我得到了以下错误: ! [rejected] master -> dev (fetch first) error: failed to push some refs to 'https://myus

我在一个团队中工作,有几个开发人员在BitBucket上使用git。我们都在开发一个
dev
分支,在发布之前不推到
master

其中一个开发人员犯了错误的代码,意外地改写了我自己的代码,现在我正试图将正确的代码推回到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
中所预期的)。因此,我用提交前复制的备份替换了不正确的代码,当我再次尝试推送时,我得到了相同的错误

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

以下是我为了提交而运行的命令(如果有帮助的话):

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上搜索了几个小时,并遵循了不同的说明,但我仍然无法将
推送到
dev
分支。 我试着简单地推拉使用:

git pull dev
而不是
git拉取主机:dev

如果有人遇到同样的问题,希望这能帮助他们。

git pull master:dev
将获取
远程/master
分支,并将其合并到您的
本地/dev
分支中

git pull dev
将获取
remote/dev
分支,并将其合并到当前分支中

我想您说过冲突提交在
remote/dev
上,所以这可能是您想要获取和合并的分支


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

中的情况。我出现此错误,原因是服务器上有更新,但SourceTree未显示任何可用更新(可能是因为上次检查时我处于脱机状态)。所以我在源代码树中进行了一次刷新,现在它显示了两个要推送的项,而不是一个项

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

您需要输入:

$ git pull
$ git fetch 
$ git merge

如果您使用的是git push origin master--force,您将遇到一个大问题。

您可以通过使用“force push”覆盖git所做的任何检查。在终端中使用此命令

git-push-f源主机


但是,您可能会忽略remote中的现有工作—您正在有效地重写remote的历史记录,使其与本地副本完全相同。

当我们试图推送到远程存储库,但在remote上创建了一个尚未拉取的新文件时,会发生这种情况,比如说
自述文件。在这种情况下,正如错误所说

git拒绝更新

因为我们没有在本地环境中使用更新的远程设备。 所以,先从远处拉

git pull
git pull origin master
它将更新您的本地存储库并添加一个新的
自述文件。
然后将更新的更改推送到远程

git push origin master

实际上,github比我们想象的要简单得多,而且每当我们尝试推送时,它绝对会发生,即使我们在git存储库中显式插入了一些文件,所以,为了解决问题,只需尝试

:git拉力

然后

:git推送

注意:如果在拉取存储库后意外卡在vim编辑器中,请不要担心,只需关闭vim编辑器并尝试推送:)

强制推送即可


git push-f origin master

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

所以从远程创建一个拉

git pull
git pull origin master
然后将更改推送到那个遥控器

git push origin master

您可以尝试这样做:
git-pull-origin-master--rebase

我已经完成了以下步骤。最后,它工作得很好

台阶 1) git初始化

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

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

4) git提交-m
“”

5) git远程添加源
“”

6) git pull--允许不相关的历史记录
“”
master


7) git push-u
master

我也遇到了同样的问题。碰巧我在存储库中创建了.Readme文件,但没有先拉它

您可能需要删除.Readme文件或在推送之前将其拉入

git-pull——重新设置原始主机的基础

git推送源站主控台


git-push-f源主机

警告git推送-f原始主机

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

    • 错误可能是由于您提交的代码结构与GitHub上的代码结构不同。您可以参考:如何处理“”错误:


      对我来说,这是最好的选择,它工作简单

      git-pull——重新基址
      

      然后

      git推送

      祝您好运

      您可以使用

      git pull --rebase <your_reponame> <your_branch>
      
      git-pull——重新基址
      

      这将有助于防止您的本地回购协议中尚未注册某些变更。特别是
      README.md

      我就是这样解决这个问题的:<