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

y0u0uwnf  于 2022-09-21  发布在  Git
关注(0)|答案(6)|浏览(202)

我所在的团队有几个开发人员在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操作,但随后收到合并冲突。在为合并冲突输入消息后,我的本地代码现在是其他开发人员意外上载的不正确代码(正如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分支。

iyzzxitl

iyzzxitl1#

您可以通过使用“强制推送”来覆盖git执行的任何检查。在终端中使用此命令
Git Push-f原点主机

但是,您可能会忽略远程服务器中的现有工作--您实际上是在重写远程服务器的历史记录,使其与本地副本完全相同。

x6492ojm

x6492ojm2#

当我们试图推送到远程存储库,但已在远程创建了一个尚未拉出的新文件(比方说Readme)时,就会发生这种情况。在这种情况下,如错误所示
Git拒绝更新

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

git pull

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

git push origin master
b1uwtaje

b1uwtaje3#

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

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

我想您说过冲突的提交位于remote/dev上,所以这可能是您打算获取并合并的分支。

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

332nm8kg

332nm8kg4#

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

因此可以从远程创建拉取

git pull origin master

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

git push origin master
wbgh16ku

wbgh16ku5#

用力推

Git Push-f原点主机

z6psavjg

z6psavjg6#

你可以试试这个:git pull origin master --rebase

相关问题