Ich habe verschiedene Dinge über die Wiederholungsfunktion von git gelesen und denke darüber nach, sie zu aktivieren. Aber ich habe niemanden gesehen, der mögliche Probleme erwähnt hat, die bei der Verwendung auftreten könnten. Ich muss davon ausgehen, dass es einen Nachteil gibt, oder es wäre wahrscheinlich standardmäßig aktiviert. Gibt es also Nachteile bei der Aktivierung von Rerere? Welche potenziellen Probleme kann es verursachen, die sonst nicht auftreten würden?
git
merge
git-rerere
Ryan C. Thompson
quelle
quelle
Resolved 'index.html' using previous resolution.
Antworten:
Wenn Sie eine Zusammenführung falsch durchführen, sie dann verwerfen und dann die "gleiche" Zusammenführung erneut durchführen, ist sie erneut falsch. Sie können jedoch eine aufgezeichnete Auflösung vergessen. Aus der Dokumentation :
Achten Sie darauf, es auf bestimmten Pfaden zu verwenden. Sie möchten nicht alle Ihre aufgezeichneten Auflösungen überall wegblasen. (Es wurden
forget
keine Argumente verworfen , um dies zu verhindern, es sei denn, Sie geben ein,git rerere forget .
um dies explizit anzufordern.)Aber wenn Sie nicht daran denken, könnten Sie diese falsche Verschmelzung leicht in Ihre Geschichte aufnehmen.
quelle
rerere
bleiben die Dateien mit Konflikten weiterhin als nicht zusammengeführt markiert, sodass Sie sie manuell hinzufügen müssen (hoffentlich nach dem Überprüfen / Testen), bevor Sie sie festschreiben. Sie können jederzeitgit checkout -m <path>
die ursprüngliche Version mit Konflikten überprüfen und die Auflösung bei Bedarf wiederholen.Wie JC Hamano in seinem Artikel " Fun with rerere " erwähnt
Wenn Sie also einen
rerere
zu breiten Inhalt aktivieren , kann es aufgrund des letzten Punkts zu einer überraschenden oder verwirrenden Zusammenführungsauflösung kommen.quelle
Ich habe Rerere global aktiviert. Ich habe wirklich keine Probleme bemerkt und es scheint normalerweise mein Leben einfacher zu machen.
quelle
Ich habe ein Commit (in Gitk) ausgewählt, das nur eine Binärdatei enthielt. Cherrypick ist aufgrund eines Konflikts gescheitert (was natürlich ist) und ich habe den Konflikt gelöst, indem ich die Kirschpickel behalten habe. Ich war später überrascht, in einem anderen neu basierten Zweig festzustellen, dass sich meine DLLs nicht verhalten haben - nur um festzustellen, dass sie nicht als (ich spekuliere) automatische Konfliktlösung in die Neueinstellung übernommen wurden. Dies ist also der einzige Fall, in dem ich auf ein kontraintuitives (obwohl ich mir sicher bin, dass es vollkommen konsistent ist) Verhalten gestoßen bin (nachdem ich es erneut aktiviert habe).
quelle
git rerere forget path/to/compiled/bin.dll