2016-07-22 5 views
1

Person A schob seine Dateien in ein Github-Repository, und dann schob Person B seine Datei zum selben Github-Repository.Stellt dieser Befehl git ein github-Repository auf einen früheren Zeitpunkt zurück?

A war nicht wie Bs Commit und stellte das Github-Repository wieder her, wo es vor Bs Push war. A beanspruchte den folgenden Befehl zu verwenden, um zu erreichen, dass

git push origin master -f 

und ich könnte einen Teil Befehl falsch, weil ich mit dem Zeug nicht vertraut bin.

A hat in seinem lokalen Repository seit seinem Push nichts geändert.

Meine Fragen sind

  • warum kann ich nicht finden B in der Geschichte der Github-Repository begehen ist?
  • Warum gibt es nur einen Commit von A, genau wie vor B's Push?
  • Was macht der von A verwendete Befehl? Alles zurück auf den Punkt vor Bs Push?

Danke.

Antwort

2

Die -f Flagge steht für Kraft. Ich kann nur raten, aber was wahrscheinlich passiert ist, war, dass A B's Wechsel noch nicht hatte, also musste B, um B's Veränderung "rückgängig zu machen", nur mit Gewalt durchstoßen werden.

  • B begehen ist im Protokoll nicht vorhanden, weil A ein Repository kraft geschoben, die die Änderung nicht sehen auf allen
  • hatte vorherigen
  • Nicht ganz. An sich werden die Dinge nicht rückgängig gemacht, aber um die Geschichte wie A zu löschen, müsstest du schließlich einen Kraftschub anwenden.
5

Dies ist wahrscheinlich das, was passiert ist:

  • zunächst im Github-Repository, die Master Verzweigungspunkte 1.
  • B schiebt seine Änderungen zu übernehmen. Diese besteht aus zwei Dingen:
    • senden seine commit (verpflichten 2) mit der Remote-Repository
    • den Remote-Server zu sagen, dass der Master Zweig jetzt nicht mehr Punkte 1 zu begehen, aber 2.
    • zu begehen
  • A verwendet die git push origin master -f, die Remote-Repository sagte den Master Zweig Bezug zurück zu bewegen 1 erneut zu begehen (oder was auch immer seine aktuellen Master Verzweigungspunkte zu begehen). Jetzt

, um Ihre Fragen zu beantworten:

warum kann ich nicht finden B begeht die in der Geschichte der Github-Repository? Warum gibt es nur einen Commit von A, genau wie es vor Bs Push war?

B Commit ist immer noch da, aber es wird nicht mehr von einer Verzweigung referenziert. Wenn Sie git log auf Master tun, sehen Sie nur das Commit, auf das dieser Zweig verweist, und alle seine Vorfahren. Alle anderen Commits, die von Commit 1 oder von Commit 1 unabhängig sind, werden nicht angezeigt.

Die einzige Möglichkeit, ein Orphan-Commit aufzulisten, ist git reflog auf einem Computer zu tun, der dieses Commit kürzlich ausgecheckt hatte.

Was macht der von A verwendete Befehl? Alles zurück auf den Punkt vor Bs Push?

Siehe die dritte Kugel oben.

Verwandte Themen