2009-07-15 2 views
2

Wir haben ein Repository, das nur einen Master-Zweig hat (für den Zweck dieser Diskussion). Irgendwie haben wir eine Situation, in der ein Entwickler seinen lokalen Master verschmolzen hat und andere Commits verloren hat.Git-Commits gefunden im Master, nicht gezeigt, wenn das Logbuch einer bestimmten Datei angezeigt wird

Die Situation ist, dass für ein paar Commits, wenn wir Git Log von der Wurzel des Projekts laufen zeigt es die Festschreibung. Wenn wir eine dieser Dateien auswählen und git log ausführen, wird das Commit im Protokoll nicht angezeigt. Die Änderungen in diesem Commit spiegeln sich auch nicht in einem Checkout des Kopfes wider.

Hat jemand irgendwelche Ideen, wie kann diese Situation auftreten und wie können wir verhindern, dass es wieder passiert?

+0

Können Sie die verlorenen Commits von der Zusammenführung sehen, wenn Sie 'git log --follow FILE' folgen? Das ist mir passiert und die Datei wurde nicht umbenannt. –

Antwort

6

Klingt wie vielleicht die Änderungen an den Dateien, die in der lokalen Zusammenführung durch den Entwickler verloren gegangen sind, möglicherweise während Konflikte vor dem Zusammenführen gelöst werden.

Sie sollen diesen Befehl im Verzeichnis Projektstamm versuchen:

git log --stat -c 

Blick auf, welche Dateien in jedem geändert wurden begehen, und prüfen Sie, ob all diese Änderungen in der Zusammenführung enthalten sind.

2

Wenn Sie

$ git log file 

laufen würde es alle anzeigen begeht aus aktuellen Zweig beginnen (was anders sein könnte: check out „git branch“ -Ausgabe beide auf dem gleichen Zweig sind), sondern nur diejenigen zusagt, habe Änderungen, die sich auf den angegebenen Pfad auswirken. Selbst wenn Sie keine anderen Zweige haben, befinden Sie sich möglicherweise auf einem abgekoppelten HEAD, d. H. Auf einem unbenannten Zweig.

Überprüfen Sie auch "git show" oder "git whatchanged" (oder "git show master"), wenn Dateien wirklich geändert werden.
Verwenden Sie "git show --cc" oder "git show --raw --abbrev", wenn Sie die Zusammenführung überprüfen möchten.

Zur Wiederherstellung können Sie "git reflog"/"git log -g" verwenden.

Verwandte Themen