首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git推送覆盖远程存储库上的更改。

git推送覆盖远程存储库上的更改。
EN

Stack Overflow用户
提问于 2019-12-31 21:34:47
回答 2查看 858关注 0票数 3

我遇到了以下问题,在使用git时,我认为这是不可能的(遥控器在Github上)。

我将更改推送到远程,该推送覆盖了以前的push (来自另一个用户)所做的一些更改,并添加了一个已经在远程上的重复类定义(结果是类的重复定义)。

我假设发生了以下情况之一:

  • 我在任何提交之前都做了一个git pull,我总是这样做,在我记忆中没有冲突,或者
  • (不太可能,但可能)我忘记了pull,在这种情况下,我应该得到一条错误消息,就像我试图在本地存储库上复制这个问题时得到的一样:

我希望看到的信息,但我没有

代码语言:javascript
复制
! [rejected]        master -> master (fetch first)
error: failed to push some refs to '../git_sandbox/proj1'

我真的很想了解这种情况是如何发生的,以避免将来发生这种情况。

按照编辑的建议,reflog在提交之前显示了3拉:

代码语言:javascript
复制
2ccc5bf HEAD@{3}: commit: put back the bug fix in Hf._SubCl.init_from_js that was overwritten
98d087e HEAD@{4}: pull: Fast-forward
1154c89 HEAD@{5}: pull: Fast-forward
3e8f4e6 HEAD@{6}: pull: Fast-forward

但我无法从中推断出任何新的信息。

EN

回答 2

Stack Overflow用户

发布于 2019-12-31 21:51:20

git push不会覆盖其他用户在同一时间所做的更改,远程将拒绝推送。(注意,,您可以在另一次提交中删除其他人的文件并将其推送。这将拒绝而不是,但是旧的提交仍然存在,您可以显示它/回滚)

无论同时发生了什么,git push -f都会覆盖这些更改。

git push --force-with-lease将覆盖更改,但如果其他人同时推送,它将被拒绝。

见关于这个问题的评论如下:

git fetch下载远程服务器的状态。

git merge将合并两个分支。

git pull将下载(获取)远程状态,并将其与本地状态合并。如果其他用户同时完成任务,那么您的本地存储库将在此之后与远程同步,您将能够在没有问题的情况下推送它。

your case中,另一个人commited和pushed和您的push被拒绝,因为您的时间线中没有他的提交。您需要使用pull来复制那里的更改。

票数 2
EN

Stack Overflow用户

发布于 2019-12-31 22:00:54

可能有几种情况会导致这些结果:

pull

正如您提到的,您没有从存储库中提取最新的更改。

代码语言:javascript
复制
Git will not allow you to "add" code (`git push`) while your local branch is behind the remote branch

rebase

其他人使用重基“播放”了存储库,并修改了存储库历史记录。

reset

类似于reabse -您的HEAD重置=指向比远程分支更早的提交,这将再次导致本地分支“丢失”来自远程的提交。

git reflog救援

您可以试着查看您的git reflog历史记录,看看发生了什么。

git reflog保存在HEAD上所做的所有更改,您将能够查看是否已经退出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59548599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档