Git推送到旧回购

时间:2018-06-18 18:09:49

标签: git git-push

我有一个github回购在几个月内没有被推到(我知道,坏主意),在此期间已经完成了相当多的开发。我去了回购,我收到了这个错误:

error: failed to push some refs to 

https://github.com/SteelcaseEbiz/PDE_UI_engine.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.

这不重复。我问了一个非常具体的问题,见下文,没有人回答。

如果我按照它的建议进行拉动,我是否会将旧版本拉下来,从而覆盖我所做的所有更改?

1 个答案:

答案 0 :(得分:1)

Git给出的消息很重要,但了解什么不仅仅是在屏幕上显示文本,更重要。

基本上是这种情况:在该远程存储库中,您尝试将其推送到本地没有的分支上的提交。

您是最初避免获取它们还是在您上次从存储库中获取它们之后将其添加到该存储库中并不重要,重要的一点是它们在那里,而您没有它们。

因此,要回答您的问题,如果您将这些提交拉入/合并到本地存储库中,我们将无法真正回答您的问题。

以下情况都是可能的,并且可能还有更多可能的情况:

  1. 那些提交与您害怕丢失的东西完全无关。合并它们将通过添加新文件,修改现有文件甚至删除一些文件将这些更改添加到本地存储库中。
  2. 这些提交通过修改可以触摸您担心丢失的文件。合并是否成功取决于这些文件在哪些区域的更改。它可能会变成您必须解决的合并冲突,或者合并会自动顺利进行。
  3. 那些提交会删除您担心丢失的文件。如果您还在本地修改了相同的文件,那么您将遇到合并冲突,在这里您必须选择是保留修改的文件还是删除它们。如果您尚未在本地更改它们,则它们将被删除。
  4. 上述操作的任意组合。

简而言之,我们不可能告诉您结果如何。

但是不要担心,我喜欢Git的其中一件大事就是可以尝试。

请执行以下操作:

  1. 进行本地克隆或复制整个本地存储库
  2. 在复制/克隆中,将要合并的遥控器添加为遥控器
  3. 从此遥控器中拉入/合并更改,解决所有冲突

最坏的情况:您破坏了该副本/克隆。如果您认为自己只是搞砸了,请销毁该克隆,然后重试。如果您认为两个存储库无法通过合并进行对帐,那么现在您将对将会发生的事情有一个答案。

请注意,您实际上不必对克隆进行操作,可以在实际的本地存储库中清理合并后的合并,但是无论如何我还是建议您这样做,以确保您不会意外破坏任何重要的内容。