2016-03-31 11 views
4

HintergrundEntire git Geschichte der Commits wird verdoppelt

Ich habe gerade bemerkt, dass die ganze Geschichte begehen in meinem Repo wird verdoppelt.

Als Referenz bin ich der einzige Beitrag, und es ist ein privates Repository.

Es sieht so aus, als ob es zwei Mitwirkende gibt, weil ich ein altes Konto habe, dessen Info noch in git config --global user.email auf einem meiner Computer war.

Die Verdoppelung trat auf, nachdem ich das Projekt geklont und von einem anderen Computer aus begonnen hatte.

Auszug aus git log:

commit 76cd0efa307e501abfe13cd907957e4dcff7e75e 
Author: myaccount <[email protected]> 
Date: Mon Mar 21 18:58:39 2016 +0100 

FEATURE - Add VideoNotFoundException. 

commit 0430ef9dc5d3baa2189ba1c18b4bedb9d2940e51 
Author: myaccount <[email protected]> 
Date: Mon Mar 21 18:58:39 2016 +0100 

FEATURE - Add VideoNotFoundException. 

commit 94e7221e472e29119c9e4fe48944cd4d7528e207 
Author: myaccount <[email protected]> 
Date: Mon Mar 21 18:41:11 2016 +0100 

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

commit 8b26a51b84d4fb3ae72eefe2834649ff8bc8b7ce 
Author: myaccount <[email protected]> 
Date: Mon Mar 21 18:41:11 2016 +0100 

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

commit 7f9b3b6f214e445918d509d7f9377d3d7ce875da 
Author: myaccount <[email protected]> 
Date: Tue Mar 15 17:05:46 2016 +0100 

CLEANUP - Remove unused code/uses. 

commit c83fa2c238d1437c967b40d6e807c2567eb7572d 
Author: myaccount <[email protected]> 
Date: Tue Mar 15 17:05:46 2016 +0100 

CLEANUP - Remove unused code/uses. 

Es gibt jetzt 234 Commits im Repository, von denen etwa die Hälfte tatsächlich, real Commits.

enter image description here

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. 

ich nicht, ob das Rebasing und Quetschen Gegensatz Meine Versuche, was ich zu tun habe:

Dies spiegelt sich auch auf GitHub reflektiert. Ich habe versucht, zu verwenden, aber die Verdopplung wird nicht in der Liste der Commits dort widerspiegelt, also kann ich nicht.

Frage

Kann setze ich das Repository in einen früheren Zustand (basierend auf einem bestimmten Zeitpunkt)? (Als Referenz ist mein Repo auf GitHub.)

Wenn nichts funktioniert, nehme ich an, ich könnte das Repository neu starten, da alle Funktionen erhalten bleiben. Es ist nur eine schmutzige Geschichte.

Verwandte Frage

Bitte schließen Sie nicht als Duplikat Fixing git double-commit history. Während die Fragen ähnlich sind, gilt die angenommene Antwort nicht für meinen Fall, da die doppelten Commits nicht in der Datei git rebase widergespiegelt werden, in der Sie Pick/Squash wählen.

+1

Liefern Sie zusätzliche Argumente für 'git log'? Versuchen Sie auch 'git log --graph', oder 'git log --oneline --decorate --graph' (das Hinzufügen von '--graph' ist oft ziemlich aufschlussreich); und schau dir auch 'git log --oneline --decorate --graph --all' an. – torek

+0

Ist das in der Geschichte von Github widergespiegelt? –

+0

@torek - 'git log --graph' zeigt alle doppelten Commits auf der gleichen "Zeile" sozusagen. Es gibt keine Divergenz. Die einzigen Teile, wo es Divergenz gibt, ist, wenn ich andere Zweige in Master zusammengeführt habe. Dort gibt es auch doppelte Commits. – Alec

Antwort

1

Diese Antwort wurde vom GitHub-Team per E-Mail nach etwa einer Woche Untersuchung empfohlen.

Ursache

Irgendwann habe ich eine git filter-branch, nach dem ich gedrängt Kraft (git push -f origin), aber ich vernachlässigte meine lokalen Klon rebase. Beim nächsten Push wurde meine lokale Geschichte über die Remote-Geschichte geschoben, was zu einer Verdopplung der Commits führte.

Lösung

Leider gibt es keine schnell Lösung für dieses. Die Lösung, wie auch mein Anfangsverdacht, war, dass es eine komplette Neubildung aller Commits geben muss, wobei Sie jedes Paar Double-Commits und squash haben.

Hierfür können Sie Git's interactive rebase tool verwenden.

Für Repositories mit beträchtlicher Historie ist dies eine ziemliche Aufgabe und könnte sehr zeitaufwendig sein.

Alternative Lösung

Der Arbeits Baum ist immer noch in einem guten Zustand, so eine andere Lösung ist, einfach die Arbeits Baum in ein neues Projekt zu migrieren.

Vorsicht: Sie werden Ihre Commit-Geschichte verlieren, indem Sie dies tun, aber seien wir ehrlich, das ist das Ziel in erster Linie.