尝试变基会导致无休止的合并冲突

Attempting to rebase gives endless merge conflicts

我不小心创建了所有项目提交的副本并推送到远程,我的项目从 500 次提交跃升至 1000 次。我检查了 remove duplicate commits 的所有链接,但是 none 这些对我来说很有意义。如果我尝试变基,我只会得到一个 merge conflicts every single commit ,而且我不会从一开始就花几个小时来解决冲突。我的历史记录如下:

有没有办法进入并强制删除重复的提交?我真的不想花几个小时从 ~1000 次提交前手动压缩每个重复的提交。

更好的是,有什么方法可以撤消此操作吗?这是 filter-branch 命令的结果,我没有意识到每次提交都会重复

您可以尝试 rebasing,但您说您遇到了问题,或者您可以尝试 undogit reflog。我在下面留下两个选项:

撤消 Git Reflog

你提到你想撤销过滤命令的结果,所以你可以尝试运行:

> $ git reflog

d363d7c HEAD@{0}: commit: minor typo
87c9470 HEAD@{1}: pull: Fast-forward
a74a14e HEAD@{2}: checkout: moving from clojure-script-begginer to master
ce79d4e HEAD@{3}: commit: article for review
a74a14e HEAD@{4}: checkout: moving from master to clojure-script-begginer
a74a14e HEAD@{5}: pull: Fast-forward
14ec10b HEAD@{6}: checkout: moving from cors to master
e71cf74 HEAD@{7}: commit: Config URL commented out

如果您看到这样的列表,并且您可以注意到过滤器命令 运行 之前的条目,您可以将 b运行ch 重置为该点:

> git reset --hard <COMMIT ID>

COMMIT ID 将是 git reflog

第一列中的任意数字

变基

1。创建另一个 b运行ch

不要执行 b运行ch 中的任何步骤你目前有 100 次提交,因为我们将进入危险区域相当长一段时间。

假设你是硕士:

> git checkout -b fixing-duplicates

2. 交互式变基以删除重复项

运行:

> git rebase -i HEAD~1000

将打开一个文本编辑器(默认编辑器)并显示所有之前的 100 次提交。删除重复提交的行,直到只有您想要的提交。保存退出。

在这一点上我不希望你有 rebase 冲突。

3。推 b运行ch

只需将 b运行ch 推到上游:

> git push origin fixing-duplicates

4。检查 b运行ch 是否正常

给 b运行ch 看一下,看看这是否真的是您想要的。如果是,只是 运行:

> git push origin fixing-duplicates:master -f

如果您的 GitHub 实例阻止强制推送到默认 b运行ch,请将默认 b运行ch 更改为 fixing-duplicates 和 运行再次命令。然后只需将默认的 b运行ch 切换回 master.

如果有帮助请告诉我。