我所在的团队有几个开发人员在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上查找了几个小时,并遵循了不同的说明,但我仍然无法push
到dev
分支。
6条答案
按热度按时间iyzzxitl1#
您可以通过使用“强制推送”来覆盖git执行的任何检查。在终端中使用此命令
Git Push-f原点主机
但是,您可能会忽略远程服务器中的现有工作--您实际上是在重写远程服务器的历史记录,使其与本地副本完全相同。
x6492ojm2#
当我们试图推送到远程存储库,但已在远程创建了一个尚未拉出的新文件(比方说
Readme
)时,就会发生这种情况。在这种情况下,如错误所示Git拒绝更新
因为我们还没有在我们的本地环境中更新远程。所以先从遥控器拉
它将更新您的本地存储库并添加一个新的
Readme
文件。然后将更新的更改推送到远程b1uwtaje3#
git pull <remote> master:dev
将获取remote/master
分支并将其合并到local/dev
分支中。git pull <remote> dev
将获取remote/dev
分支,并将其合并到当前分支中。我想您说过冲突的提交位于
remote/dev
上,所以这可能是您打算获取并合并的分支。在这种情况下,您实际上没有将冲突合并到您的本地分支中,这有点奇怪,因为您说您在工作副本中看到了不正确的代码。您可能需要检查
remote/master
中发生的情况。332nm8kg4#
当回购包含一些本地不存在的项目时,通常会发生这种情况。因此,为了推送我们的更改,在本例中,我们需要集成远程更改,然后推送。
因此可以从远程创建拉取
然后将更改推送到该遥控器
wbgh16ku5#
用力推
Git Push-f原点主机
z6psavjg6#
你可以试试这个:
git pull origin master --rebase