Git失败,出现致命错误。拒绝将不相关的历史与Git推送合并? [英] Git failed with a fatal error. refusing to merge unrelated histories with git push?
问题描述
我在本地做了一些更改,我正试图将这些更改推向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%只读的。我尝试更改所有提交的用户名...
您可以做的是接受一系列包含您不喜欢的内容的提交-例如作者和/或提交者的姓名和/或电子邮件地址-然后将它们复制到新的和改进的提交中,这些提交在其他方面是相同的,但此问题已更正。看起来这一定是您所做的,因为:
当然,这种加倍正是您在进行更正的提交时所做的。您告诉您的Git放弃旧的(不正确的)提交以支持新的改进的提交,它做到了。但是另一个Git存储库--GitHub上的那个--仍然有不正确的提交。然后告诉Git获取它们拥有的、您没有的任何提交--在本例中是您刚刚丢弃的提交--然后将它们与您拥有的、它们没有的提交连接起来,在这种情况下,这些提交是您新的和改进的替代品。 您必须放弃联合合并,通常是通过.[在]Pull命令之后...每次提交都会使用正确和错误的用户名进行简单的翻倍。
git reset
。这会让您回到用新的和改进的副本替换旧的和不正确的提交的情况-即,回到您运行git pull
之前的位置。您现在回到了原来的位置:您仍然需要说服GitHub的Git放弃其旧的和不正确的提交,转而支持您的新的和改进的提交。
为此,您必须使用git push --force
或git push --force-with-lease
。您还必须拥有执行此操作的权限,但如果GitHub存储库在您的控制之下,则情况可能已经如此,或者设置起来很容易(您必须告诉GitHub禁止什么,所以如果您之前没有禁止自己强制推送,现在就不需要更改任何内容)。
请注意,丢弃任何给定的提交必然会丢弃所有后续提交。因此,如果您希望保留其他提交,则必须首先将这些复制到新的和改进的提交,其改进是它们附加到现有的新的和改进的提交。
这篇关于Git失败,出现致命错误。拒绝将不相关的历史与Git推送合并?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!