整个 git 提交历史记录加倍

Ale*_*lec 5 git github

背景

我刚刚注意到我的存储库中的整个提交历史记录都加倍了。

作为参考,我是唯一的贡献者,它是一个私人存储库。

看起来好像有两个贡献者,因为我有一个旧帐户,其信息仍在git config --global user.email我的一台计算机上。

在我克隆该项目并开始从另一台计算机上处​​理它之后,就发生了加倍。

摘自git log

commit 76cd0efa307e501abfe13cd907957e4dcff7e75e
Author: myaccount <account1@gmail.com>
Date:   Mon Mar 21 18:58:39 2016 +0100

FEATURE - Add VideoNotFoundException.

commit 0430ef9dc5d3baa2189ba1c18b4bedb9d2940e51
Author: myaccount <account2@gmail.com>
Date:   Mon Mar 21 18:58:39 2016 +0100

FEATURE - Add VideoNotFoundException.

commit 94e7221e472e29119c9e4fe48944cd4d7528e207
Author: myaccount <account1@gmail.com>
Date:   Mon Mar 21 18:41:11 2016 +0100

FEATURE - Add previous/next video links to video view.

commit 8b26a51b84d4fb3ae72eefe2834649ff8bc8b7ce
Author: myaccount <account2@gmail.com>
Date:   Mon Mar 21 18:41:11 2016 +0100

FEATURE - Add previous/next video links to video view.

commit 7f9b3b6f214e445918d509d7f9377d3d7ce875da
Author: myaccount <account1@gmail.com>
Date:   Tue Mar 15 17:05:46 2016 +0100

CLEANUP - Remove unused code/uses.

commit c83fa2c238d1437c967b40d6e807c2567eb7572d
Author: myaccount <account2@gmail.com>
Date:   Tue Mar 15 17:05:46 2016 +0100

CLEANUP - Remove unused code/uses.
Run Code Online (Sandbox Code Playgroud)

现在存储库中有 234 个提交,其中大约一半是实际的、真正的提交。

这也反映在 GitHub 上:

在此输入图像描述

git log --graph --decorate --oneline --all however does NOT reflect this.

*   303bbfe (HEAD, origin/master, origin/HEAD, master) MERGE
|\  
| * b8052ce REFACTOR - Refactor front page content for maintainability.
| * b5907b2 VISUAL - Improve front page mobile view.
| * 0430ef9 FEATURE - Add VideoNotFoundException.
| * 8b26a51 FEATURE - Add previous/next video links to video view.
| * c83fa2c CLEANUP - Remove unused code/uses.
| * 9e82b8f BUGFIX - Fix redirecting /login to front page.
| * 491b88e BUGFIX - Redirecting old playlist and video links to new ones. WIP: Code duplication!
| *   a7da158 Merge branch 'master' of https://github.com/alrasch/UDLv2
| |\  
| | * a3bfe1b BUGFIX - Fix 500 error on 404 page.
| * | 258d2e9 BUGFIX - Redirecting old URLs to new ones.
| |/  
| * 4426681 FEATURE - Add more UDL logo assets.
| * 7d15c7c FEATURE - Add custom 404 page.
| * 6fbb5dd FEATURE - Add 'forgot password' function.
| * 92dd4c8 VISUAL - Fix video view layout.
| * 8a7decb VISUAL - Scale UDL logo to 75% on front page.
| * 0900fbc VISUAL - Rearrange discipline view layout.
| * 1ba38c8 VISUAL - Scale UDL logo on playlist view down to 75%.
| * eef7cd1 VISUAL - Fix playlist view layout.
| * b7fa6cb Made sidebar space on front page.
| * ace9fb6 COSMETIC - Logo on front page and navbar. Rounder buttons.
| * bbf12b3 Add MathJax LaTeX sitewide.
| * 6629128 Customize register form and add email activation.
| * 27f7114 FEATURE - Add basic search to navbar.
Run Code Online (Sandbox Code Playgroud)

我的尝试

如果我必须这样做的话,我并不反对重新定位和压缩。我尝试过使用git rebase -i HEAD~n,但加倍并没有反映在提交列表中,所以我不能。

问题

我可以将存储库重置为较早的状态(基于某个时间点)吗?(作为参考,我的存储库位于 GitHub 上。)

如果没有任何效果,我想我可以重新启动存储库,因为所有功能都被保留。这只是一段混乱的历史。

相关问题

请不要作为修复 git 双提交历史记录的重复项而关闭。虽然问题相似,但接受的答案不适用于我的情况,因为双提交未反映在git rebase您选择 pick/squash 的文件中。

Ale*_*lec 1

这个答案是 GitHub 团队经过大约一周的调查后通过电子邮件推荐的。

原因

在某个时候,我做了一个git filter-branch,之后我强制推送了 ( git push -f origin),但我忽略了对本地克隆进行变基。在下一次推送时,我的本地历史记录被推送到远程历史记录之上,导致提交加倍。

解决方案

遗憾的是,没有快速解决此问题的方法。正如我最初的怀疑一样,解决方案是需要对所有提交进行完整的重新调整,从而使您picksquash每对双重提交。

为此,您可以使用Git 的交互式变基工具

对于具有大量历史记录的存储库来说,这将是一项艰巨的任务,并且可能非常耗时。

替代解决方案

工作树仍然处于良好状态,因此另一个解决方案是简单地将工作树迁移到新项目。

注意:这样做您将丢失提交历史记录,但让我们面对现实吧,这就是我们的首要目标。