Wie verschwindet ein Commit aus dem Protokoll einer Datei?

9

Also habe ich eine Datei geändert, sie in unser Hauptrepo verschoben, dort gesehen. David zog aus diesem Repo und tat - nun, etwas - und konnte meine Veränderung nicht sehen. Da David ein typisches Microsoft-Opfer ist, bat ich ihn, das, was er hatte, ins Repo zu schieben, und ich würde es mir dort ansehen.

git log --name-only erzeugt

%Vor%

aber git log backend/theimportantfile.js erzeugt

%Vor%

Also wurde git backend/theimportantfile.js seit Wochen nicht mehr geändert, aber es wurde vor zwei Stunden auch mit dem afc2dec-Commit geändert. Wie kann ich herausfinden, was passiert ist?

    
Malvolio 24.09.2011, 19:22
quelle

3 Antworten

2

Es scheint, dass Davids Verschmelzung das ist, was du getan hast. Ich sage das, weil die Verschmelzung deine Änderungen scheinbar zurückgenommen hat.

%Vor%

Wenn dieser Befehl keine interessante Ausgabe liefert, dann fusionierte David vielleicht mit einer 'unserer' Strategie oder machte die clevere 'cp meine Dateien an einen temporären Ort; Git fusionieren; überschreiben widersprüchliche Dateien; git commit 'Workflow.

Unabhängig davon, wie dieser Zustand bei der Zusammenführung angekommen ist, muss er verworfen und neu erstellt werden, da er offensichtlich fehlerhaft ist. Sie können auch erwägen, Ihren Arbeitsablauf so zu ändern, dass David nicht mehr zusammenführen muss, sondern informelle (oder formale) "Pull Requests" einreicht und Sie sich um das Zusammenführen kümmern.

    
Frosty 04.10.2011 14:24
quelle
2

Ich bin mir nicht sicher, ob dies die Art Ihres Problems ist, aber git log filtert standardmäßig Commits heraus, von denen es denkt, dass sie nicht "nützlich" oder "interessant" sind, um den Endzustand zu verstehen ein Commit-Baum. Von die git log docs :

  

Manchmal sind Sie nur an Teilen der Geschichte interessiert, zum Beispiel an den Commits, die einen bestimmten & lt; Pfad & gt; ändern. Aber es gibt zwei Teile von History Simplification , ein Teil ist die Auswahl der Commits und der andere ist, wie es zu tun ist, da es verschiedene Strategien gibt, um die Geschichte zu vereinfachen.

     

Die folgenden Optionen beeinflussen die Art der Durchführung der Vereinfachung:

     

Default mode
  Vereinfacht die Geschichte bis zur einfachsten Geschichte, die den Endzustand des Baumes erklärt. Am einfachsten, weil es einige Seitenzweige beschneidet, wenn das Endergebnis gleich ist (d. H. Zweige mit demselben Inhalt zusammenführen).

Anstatt den Standardmodus zu verwenden, können Sie das Flag --full-history in Ihrer Datei übergeben und sehen, ob das "fehlende" Commit so aussieht:

%Vor%

Von git log docs:

  

--full-history
  Genau wie der Standardmodus, aber einige Geschichte nicht beschneidet.

Bearbeiten

Ich weiß, dass das manchmal funktioniert, weil ich eine Situation hatte, in der ich eine commit X in master hatte, die eine Änderung in einer Datei theFile enthielt. Commit X wurde dann von einem Mitarbeiter in anotherBranch übernommen, also nennen wir das neue Commit Y . Dann wurde anotherBranch in master zusammengeführt.

Als wir es taten

%Vor%

wir würden Y nicht in der Liste der Commits sehen, nur X , aber wenn wir

benutzt haben %Vor%

nur dann würden sowohl X als auch Y angezeigt. Ich nehme an, dass Git% code_% standardmäßig nicht angezeigt hat, weil es eine identische Änderung in den Endzustand des Commit-Baums eingeführt hat, da es von Y ausgewählt wurde.

    
user456814 25.05.2013 17:08
quelle
1

Es sieht so aus, als ob er einen Zusammenführungskonflikt hatte und es gelöst hat, indem er seine Version akzeptiert hat (die wahrscheinlich eine nicht existierende Datei war) statt Ihrer. Sie können die Datei zurückbringen. Siehe zum Wiederherstellen einer Datei oder eines Ordners

    
shadowland 27.10.2011 16:16
quelle

Tags und Links