Antworten:
Es gibt selten einen guten Grund dafür, aber der Parameter gilt --allow-emptyfür leere Commits (keine Dateien geändert), im Gegensatz zu --allow-empty-messageleeren Commit-Nachrichten. Sie können auch mehr lesen, indem git help commitSie die Online-Dokumentation eingeben oder besuchen .
Während das Baumobjekt (das einen eigenen Hash hat) identisch ist, hat das Commit tatsächlich einen anderen Hash, da es vermutlich einen anderen Zeitstempel und eine andere Nachricht hat und definitiv ein anderes übergeordnetes Commit hat. Alle drei Faktoren sind in gitden Objekt-Hash-Algorithmus integriert.
Es gibt einige Gründe, warum Sie möglicherweise ein leeres Commit wünschen (einschließlich einiger Kommentare):
gitBefehle testen , ohne willkürliche Änderungen zu generieren (über Vaelus ).gitolite(über Tatsh ) neu.Andere Strategien zum Hinzufügen von Metadaten zu einem Festschreibungsbaum umfassen:
git notes eine veränderbare Notiz zusätzlich zu einem bestehenden unveränderlichen Commit zuzuordnen.commit --amendwenn die Fernbedienung kein Force-Push zulässt. Auf diese Weise können Entwickler eine wichtige Nachricht sehen, die zum vorherigen Commit gehört.
Wenn Sie ein System wie gitversion verwenden, ist es sehr sinnvoll, diese Art von Commit durchzuführen . Sie könnten ein Commit haben, das speziell dafür gedacht ist, die Hauptversion mit einem + semver: major-Kommentar zu stoßen.
Als sinnvollere Alternative könnten Sie möglicherweise ein mit Anmerkungen versehenes Tag erstellen (ein benanntes Commit mit einer Nachricht). Siehe die git tag -aOption.
devVerzweigungsformularmasterund dann einefeatVerzweigung unmittelbar von erstellen, scheint die Verzweigung vondevderfeatVerzweigung zu stammenmaster, da für diedevVerzweigung, von der diefeatVerzweigung stammt, kein Unterscheidungs-Commit vorhanden ist . Ein leeres Commit, wenn Sie dendevZweig zum ersten Mal erstellen, hilft dabei, dendevZweig als einen eigenen, unbegrenzt dauerhaften Zweig unabhängig davon zu etablierenmaster. Im Allgemeinen ist es hilfreich, wenn Sie Zweige als Ebenen verwenden und zwei Ebenen aus einem einzigen Commit erstellen