Ich sehe viele Fragen, bei denen die Leute fragen, wie das “sinnlose” Merge-Commits vermeiden kann.
Was genau ist schlecht an einem Merge-Commit? Ich finde sie nützlich, da Sie genau sehen können, wo zwei Entwickler mit der Arbeit begonnen haben und wo ihre Arbeit zusammengeführt wurde. Es scheint, als würde eine Neubasierung, wie viele Antworten vermuten lassen, diese Informationen zerstören und Sie verlieren einen Großteil der Projektgeschichte.
Gibt es etwas, das ich vermisse, das einen Merge-Commit unerwünscht macht?
Es gibt zwei verschiedene Arten von Merge-Commits:
- Explizite Merge-Commits, die beispielsweise durch das explizite Mergen eines Feature-Branch in den Main-Branch entstehen
- und implizite Merge-Commits, die zum Beispiel resultieren, indem man a
git pull
bevor Sie versuchen zu drücken
Die expliziten Merge-Commits sind normalerweise vollkommen in Ordnung. Normalerweise erzwingen Sie diese Art von Merge-Commits sogar, indem Sie sagen git merge --no-ff
.
Die impliziten sind nur Rauschen, da die typische Situation ist, dass ein Entwickler eine Datei geändert hat und danach ein anderer Entwickler an einer anderen Datei arbeitet, aber vergessen hat, vor den Änderungen zu ziehen, und a git pull
wird beide Commits implizit zusammenführen, indem es ein lautes Merge-Commit erstellt. Der logischere Verlauf wäre einfach ein Commit des einen Autors und ein Commit des anderen Autors. Tun git pull --rebase
werde genau das tun.
Natürlich gibt es Ausnahmen. Wenn beide Autoren tatsächlich an derselben Datei gearbeitet haben, ist es möglicherweise besser, an dieser Stelle einen Merge-Commit zu haben. – Aber auch in diesem Fall könnte ein Rebase besser sein, da es die Änderungen gegenüber dem ersten Commit expliziter und daher weniger fehleranfällig macht.
Ich habe mich eigentlich gefragt, ob es Fälle gibt, in denen Merge-Commits tatsächlich sind Ja wirklich, Ja wirklich nützlich. (Der Fall, den Sie erwähnen, klingt ehrlich gesagt nicht allzu überzeugend …) Ich frage mich, ob jemand darauf näher eingehen möchte …
– Alois Mahdal
9. Oktober 2018 um 18:22 Uhr