Eclipse 远程回购表示它是最新的,但缺少数百个本地提交

Eclipse 远程回购表示它是最新的,但缺少数百个本地提交,eclipse,git,github,Eclipse,Git,Github,在Eclipse中(使用Egit),我的回购设置如下: 我从GitHub.com/hallvard/tdt4100-2017上的远程GitHub回购(我的讲师)中提取 我添加文件并修改一些从那里提取的文件。使用Eclipse的egit,我将更改提交到本地repo(包括来自远程pull repo的所有文件),并将所有内容推送到我自己的GitHub repo,在那里我拥有我自己的所有文件、讲师的文件以及讲师修改过的文件。 该回购协议位于github.com/vegarab/tdt4100 昨天发生了

在Eclipse中(使用Egit),我的回购设置如下:

我从GitHub.com/hallvard/tdt4100-2017上的远程GitHub回购(我的讲师)中提取 我添加文件并修改一些从那里提取的文件。使用Eclipse的egit,我将更改提交到本地repo(包括来自远程pull repo的所有文件),并将所有内容推送到我自己的GitHub repo,在那里我拥有我自己的所有文件、讲师的文件以及讲师修改过的文件。 该回购协议位于github.com/vegarab/tdt4100

昨天发生了一件奇怪的事情:在推动我自己的回购协议时,它一直说主分支机构是最新的,而事实并非如此。 是的我确实准备了这些文件,并将它们提交给了当地回购协议

我试着去终点站,从那个里推到远处,但并没有成功

我前往我的GitHub历史记录,找到了最后一次提交,并执行了以下操作:

git reset commitid
然后我试着按遥控器,但它仍然说它是最新的?呃什么?? 我复制了我的本地回购协议,只是为了确保在出现问题时我仍然保留我的文件: 我做了一个测试

它做了一些改变:我的远程回购只是讲师回购的一个分支。我所有的文件都不见了,只是它们还在本地回购协议中。尝试推送它们会提供另一个最新信息,除了远程服务器现在错过了我自己提交的数百个文件和文件夹


你怎么办?

我最终推动了本地备份回购。到远程服务器,它将远程服务器“恢复”到正确的状态


然后,我删除了原来的本地回购协议,并从远程回购协议中创建了一个新的回购协议。然后,我从讲师那里得到了新的变化,并推动了我自己的回购协议。现在它已被修复。

确保您正在推动正确的回购。假设您有两个遥控器:

上游:
您从中分出自己存储库的回购协议
来源:
您自己的存储库

克隆您自己的(
origin
)repo

现在假设
上游
已更新,您需要接受上游的新更改,然后更新自己的
原始
回购

$ git clone <own-repo-url>
$ git pull upstream master       # pull upstream/master changes
$ git push origin master         # push the changes to origin/master  

只是想检查一下(这可能看起来有点高人一等,但这不是我的本意)。。。您的更改肯定在master上,而不是在尚未合并回master的本地分支上?我不使用分支。我只是把一切都掌握在掌握之中。我真的没有任何理由创建其他分支。我应该补充一点,我只是继续将我的本地备份repo推送到GitHub,它似乎已经添加了我所有的提交和它们的历史记录。现在我在最初的地方回购中遇到了麻烦,因为我不知道如何解决冲突。我只想用我的本地回购覆盖GitHub回购,因为它是正确的版本。这是我一直在做的事情。问题是——突然之间——有一天,在我从上游提取更改后,我被禁止推到origin(origin说它是最新的,但不是)。我用下面的答案解决了这个问题,制作了一份本地回购协议的副本,并强制将其推到原点。这样,origin就可以通过本地更改和上游更改进行更新。
# do some changes

$ git add .
$ git commit -m 'Add my changes'
$ git push -u origin master
$ git pull upstream master       # pull upstream/master changes
$ git push origin master         # push the changes to origin/master