Leere Commits an die Fernbedienung senden

241

Ich habe ein Commit auf Remote verschoben, aber jetzt habe ich festgestellt, dass die Commit-Nachricht nicht korrekt ist. Ich möchte die Commit-Nachricht ändern, aber AFAIK ist nicht möglich. Also habe ich beschlossen, ein leeres Commit mit der richtigen Nachricht zu erstellen:

git commit --allow-empty

Gibt es irgendwelche Nachteile / Konsequenzen, wenn leere Commits verschoben werden? Gibt es ein Problem, mit dem ich in Zukunft aufgrund dieses leeren Commits konfrontiert sein könnte?

mrutyunjay
quelle
1
Überprüfen Sie diese ähnliche Frage stackoverflow.com/questions/6218199/…
Montaro

Antworten:

80

Sie werden keine schrecklichen Konsequenzen haben, nur die Geschichte wird verwirrend aussehen.

Sie können die Festschreibungsnachricht ändern, indem Sie Folgendes tun

git commit --amend
git push --force-with-lease # (as opposed to --force, it doesn't overwrite others' work)

ABER dies wird die entfernte Geschichte mit Ihrer überschreiben, was bedeutet, dass wenn jemand in der Zwischenzeit dieses Repo gezogen hat, diese Person sehr sauer auf Sie sein wird ...

Tun Sie es einfach, wenn Sie die einzige Person sind, die auf das Repo zugreift.

Gabriele Petronella
quelle
5
Ja, deshalb habe ich es vorgezogen, das leere Commit zu
drücken
4
@ Mrutyunjay Wenn es die Möglichkeit gibt, dass andere Leute das Repo gezogen haben, dann denke ich, dass es eine schönere Option ist.
Gabriele Petronella
1
Sie werden keine schrecklichen Konsequenzen haben, nur die Geschichte wird verwirrend aussehen - was für eine schreckliche Konsequenz! ;-)
Alois Mahdal
3
Bevorzugen --force-with-leaseverlieren Mitarbeiter Arbeit zu vermeiden.
Kenzo
22

Durch Drücken von Commits, ob leer oder nicht, werden eventuelle Git-Hooks ausgelöst. Dies kann entweder nichts bewirken oder weltbewegende Konsequenzen haben.

xor
quelle
9
Dies ist eine unterschätzte Beobachtung. Ja, leere Commits sind möglicherweise besser als geänderte Commits, aber es kann nicht davon ausgegangen werden, dass sie nebenwirkungsfrei sind, wenn möglicherweise Hooks vorhanden sind.
wintermute92
18

Gibt es irgendwelche Nachteile / Konsequenzen, wenn leere Commits verschoben werden?

Abgesehen von der extremen Verwirrung könnte jemand erfahren, warum es eine Reihe von Commits gibt, die keinen Inhalt auf Master enthalten, nicht wirklich.

Sie können das Commit ändern, das Sie an Remote gesendet haben, aber der sha1 des Commits (im Grunde ist es die ID-Nummer) ändert sich dauerhaft, wodurch sich der Quellbaum ändert. Sie müssten dann ein git push -fBack an Remote durchführen.

yamafontes
quelle
15

Solange Sie das andere Commit aus dem leeren Commit eindeutig referenzieren, sollte es in Ordnung sein. Etwas wie:

Commit message errata for [commit sha1]

[new commit message]

Wie andere bereits betont haben, ist dies häufig vorzuziehen, um ein korrigiertes Commit zu erzwingen.

153957
quelle
10
 $ git commit --allow-empty -m "Trigger Build"
sarjit07
quelle
2
Während dieser Code die Frage lösen kann, einschließlich einer Erklärung, wie und warum dies das Problem löst, würde dies wirklich dazu beitragen, die Qualität Ihres Beitrags zu verbessern, und wahrscheinlich zu mehr Up-Votes führen. Denken Sie daran, dass Sie in Zukunft die Frage für die Leser beantworten, nicht nur für die Person, die jetzt fragt. Bitte bearbeiten Sie Ihre Antwort, um Erklärungen hinzuzufügen und anzugeben, welche Einschränkungen und Annahmen gelten. Aus der Überprüfung
doppelter Piepton
-1

Was ist damit?

 git commit --allow-empty-message -m ''
David Okwii
quelle
Sie haben die Nachricht einfach entfernt und das macht es noch schlimmer, wenn ein Commit leer sein wird. Es sollte zumindest eine Nachricht geben, warum.
Eric Bishard