Git 推送到旧仓库
Git Push to old repo
我有一个 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.
这不是重复的。我问了一个非常具体的问题,见下文,没有人回答。
如果我按照它的建议进行拉取,我是否会拉下旧版本从而覆盖我所做的所有更改?
Git 给出的消息很重要,但更重要的是要理解 它所说的内容,而不仅仅是屏幕上的文字。
基本上,情况是这样的:在该远程存储库中,您尝试推送到的分支上有您在本地没有的提交。
无论您最初是避免获取它们还是在您上次从该存储库中获取它们之后将它们添加到该存储库中并不重要,重要的是它们在那里,而您没有。
因此,为了回答您的问题,我们无法真正回答您的问题,即如果您 pull/merge 将这些内容提交到您的本地存储库中将会发生什么。
以下场景都是可能的,可能还有更多场景可以想象:
- 这些承诺与您害怕失去的东西完全无关。合并它们将通过添加新文件、修改现有文件甚至删除一些文件将这些更改添加到您的本地存储库。
- 这些提交触及了您害怕通过修改丢失的文件。合并是否成功取决于这些文件的哪些区域发生了什么样的变化。它可能会变成您必须解决的合并冲突,或者合并可以自动完成。
- 这些提交会删除您害怕丢失的文件。如果您还在本地修改了相同的文件,那么您将遇到合并冲突,您必须选择是保留修改后的文件还是删除它们。如果您没有在本地更改它们,那么它们将被删除。
- 上述操作的任意组合。
总之,我们不可能告诉你结果会怎样
但不要害怕,我喜欢 Git 的一大优点是您可以进行试验。
所以请执行以下操作:
- 制作整个本地存储库的本地克隆或副本
- 在 copy/clone 中,将要合并的远程添加为远程
- Pull/merge 在此遥控器的更改中,解决任何冲突
最坏的情况:你毁掉那个copy/clone。如果您认为自己搞砸了,请销毁克隆并重试。如果您认为这两个存储库无法通过合并进行协调,那么您现在对将会发生什么有了自己的答案。
请注意,您实际上不必对克隆进行操作,您可以在真正的本地存储库中清理拙劣的合并,但我还是建议您这样做,这样您就不会意外破坏任何东西重要。
我有一个 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.
这不是重复的。我问了一个非常具体的问题,见下文,没有人回答。
如果我按照它的建议进行拉取,我是否会拉下旧版本从而覆盖我所做的所有更改?
Git 给出的消息很重要,但更重要的是要理解 它所说的内容,而不仅仅是屏幕上的文字。
基本上,情况是这样的:在该远程存储库中,您尝试推送到的分支上有您在本地没有的提交。
无论您最初是避免获取它们还是在您上次从该存储库中获取它们之后将它们添加到该存储库中并不重要,重要的是它们在那里,而您没有。
因此,为了回答您的问题,我们无法真正回答您的问题,即如果您 pull/merge 将这些内容提交到您的本地存储库中将会发生什么。
以下场景都是可能的,可能还有更多场景可以想象:
- 这些承诺与您害怕失去的东西完全无关。合并它们将通过添加新文件、修改现有文件甚至删除一些文件将这些更改添加到您的本地存储库。
- 这些提交触及了您害怕通过修改丢失的文件。合并是否成功取决于这些文件的哪些区域发生了什么样的变化。它可能会变成您必须解决的合并冲突,或者合并可以自动完成。
- 这些提交会删除您害怕丢失的文件。如果您还在本地修改了相同的文件,那么您将遇到合并冲突,您必须选择是保留修改后的文件还是删除它们。如果您没有在本地更改它们,那么它们将被删除。
- 上述操作的任意组合。
总之,我们不可能告诉你结果会怎样
但不要害怕,我喜欢 Git 的一大优点是您可以进行试验。
所以请执行以下操作:
- 制作整个本地存储库的本地克隆或副本
- 在 copy/clone 中,将要合并的远程添加为远程
- Pull/merge 在此遥控器的更改中,解决任何冲突
最坏的情况:你毁掉那个copy/clone。如果您认为自己搞砸了,请销毁克隆并重试。如果您认为这两个存储库无法通过合并进行协调,那么您现在对将会发生什么有了自己的答案。
请注意,您实际上不必对克隆进行操作,您可以在真正的本地存储库中清理拙劣的合并,但我还是建议您这样做,这样您就不会意外破坏任何东西重要。