Git失败,出现致命错误。拒绝将不相关的历史与Git推送合并? [英] Git failed with a fatal error. refusing to merge unrelated histories with git push?

查看:23
本文介绍了Git失败,出现致命错误。拒绝将不相关的历史与Git推送合并?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在本地做了一些更改,我正试图将这些更改推向GitHub。我读到过我可以使用--allow-unrelated-histories,但只看到了演示如何为Pull执行此操作的示例,而这不是我所需要的。我需要使我的本地目录为主目录。

我尝试了以下命令: git push origin master --allow-unrelated-histories

但它不起作用,我收到一条消息,说这是未知选项。

我通常使用Visual Studio。我明白了这一点,当涉及到狂欢的时候,我对Git一点也不熟悉。我用gitignore等文件猛烈攻击我的文件夹,并试图进行更改。如果可能的话,我更喜欢在Visual Studio中这样做,但我也不知道如何在Visual Studio中修改选项。

编辑:显然,我想要做的事情实际上是不可行的。我发现Pull命令"在某种程度上"符合我的预期,但并不是真的。我尝试更改所有提交的用户名,但都没有成功,因为GitHub仍然会保留错误的用户名。现在,每次提交都使用正确和错误的用户名。

推荐答案

--allow-unrelated-histories标志仅适用于合并。由于git push不会合并,因此它没有--allow-unrelated-histories选项。(与git pull命令形成对比,有时会运行git merge,而且非常频繁。)

我尝试更改所有提交的用户名...

您不能更改有关任何现有提交的任何内容。所有提交都是100%只读的。

可以做的是接受一系列包含您不喜欢的内容的提交-例如作者和/或提交者的姓名和/或电子邮件地址-然后将它们复制到新的和改进的提交中,这些提交在其他方面是相同的,但此问题已更正。看起来这一定是您所做的,因为:

.[在]Pull命令之后...每次提交都会使用正确和错误的用户名进行简单的翻倍。

当然,这种加倍正是您在进行更正的提交时所做的。您告诉您的Git放弃旧的(不正确的)提交以支持新的改进的提交,它做到了。但是另一个Git存储库--GitHub上的那个--仍然有不正确的提交。然后告诉Git获取它们拥有的、您没有的任何提交--在本例中是您刚刚丢弃的提交--然后将它们与您拥有的、它们没有的提交连接起来,在这种情况下,这些提交是您新的和改进的替代品。

您必须放弃联合合并,通常是通过git reset。这会让您回到用新的和改进的副本替换旧的和不正确的提交的情况-即,回到您运行git pull之前的位置。您现在回到了原来的位置:您仍然需要说服GitHub的Git放弃旧的和不正确的提交,转而支持您的新的和改进的提交。

为此,您必须使用git push --forcegit push --force-with-lease。您还必须拥有执行此操作的权限,但如果GitHub存储库在您的控制之下,则情况可能已经如此,或者设置起来很容易(您必须告诉GitHub禁止什么,所以如果您之前没有禁止自己强制推送,现在就不需要更改任何内容)。

请注意,丢弃任何给定的提交必然会丢弃所有后续提交。因此,如果您希望保留其他提交,则必须首先将这些复制到新的和改进的提交,其改进是它们附加到现有的新的和改进的提交。

这篇关于Git失败,出现致命错误。拒绝将不相关的历史与Git推送合并?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆