我遇到了以下问题,在使用git时,我认为这是不可能的(遥控器在Github上)。
我将更改推送到远程,该推送覆盖了以前的push (来自另一个用户)所做的一些更改,并添加了一个已经在远程上的重复类定义(结果是类的重复定义)。
我假设发生了以下情况之一:
git pull,我总是这样做,在我记忆中没有冲突,或者pull,在这种情况下,我应该得到一条错误消息,就像我试图在本地存储库上复制这个问题时得到的一样:。
我希望看到的信息,但我没有
! [rejected] master -> master (fetch first)
error: failed to push some refs to '../git_sandbox/proj1'我真的很想了解这种情况是如何发生的,以避免将来发生这种情况。
按照编辑的建议,reflog在提交之前显示了3拉:
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但我无法从中推断出任何新的信息。
发布于 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来复制那里的更改。
发布于 2019-12-31 22:00:54
可能有几种情况会导致这些结果:
pull
正如您提到的,您没有从存储库中提取最新的更改。
Git will not allow you to "add" code (`git push`) while your local branch is behind the remote branchrebase
其他人使用重基“播放”了存储库,并修改了存储库历史记录。
reset
类似于reabse -您的HEAD重置=指向比远程分支更早的提交,这将再次导致本地分支“丢失”来自远程的提交。
git reflog救援
您可以试着查看您的git reflog历史记录,看看发生了什么。
git reflog保存在HEAD上所做的所有更改,您将能够查看是否已经退出。

https://stackoverflow.com/questions/59548599
复制相似问题