2016-03-29 8 views
2

Als ich rebase und ein Konflikt entsteht, sieht der konfliktbehafteten Datei wie folgt aus:Wie man git SHAs in konfliktbehaftete Datei einfügt, anstatt Kommentare zu committen?

<<<<<<< c50c817dad7008a3760241084de2b83fd4f84288 
it was on master 456 
======= 
it was on master 123 
>>>>>>> branch - set up README conflict 

Manchmal nicht andere Menschen groß machen solche Nachrichten begehen, so könnte ich mit so etwas wie dieses aufzuwickeln:

<<<<<<< c50c817dad7008a3760241084de2b83fd4f84288 
it was on master 456 
======= 
it was on master 123 
>>>>>>> fixed stuff 

Das Problem damit ist, dass, wenn es mehr als ein "fixed stuff" commits gibt, ich Probleme haben werde, das genaue Commit zu finden. Gibt es eine Möglichkeit, dass ich git immer SHA-Hashes anstelle von Commit-Nachrichten verwenden kann?

Antwort

0

Leider nein.

Nun, auf der anderen Seite: Ja, eine Art: Verwenden Sie einen getrennten HEAD und Kirsche Pick Commits manuell, nach ID, so dass Git hat keinen Namen, den er ersetzen kann. Das verhindert jedoch einen Großteil des Zwecks der Rebase (Rebase automatisiert die Rosinenpickerei, plus das Update der Zweigstelle am Ende).

Sie sollten nicht benötigen, dies aus zwei Gründen zu tun. Derjenige, den Sie nicht kontrollieren können, ist, dass Leute keine beschissenen Commit-Nachrichten verwenden sollten. :-) Die eine, die Sie können verwenden ist, dass wenn Rebase stoppt mit einem Konflikt, HEAD und CHERRY_PICK_HEAD identifizieren die SHA-1s der beiden widersprüchlichen Commits. Details siehe the git cherry-pick documentation.

(ich empfehle auch merge.conflictstyle-diff3 Einstellung, die Sie Version finden Sie in der Basis kann. Es ist für rebase/cherry-pick wie für vollen verschmilzt nicht so notwendig ist, aber ich mag es.)