git:更新被拒绝,因为远程包含您在本地没有的工作
我在一个团队中工作,有几个开发人员在BitBucket上使用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
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
我就是这样解决这个问题的:<