Einfaches Werkzeug, um 'ihre' anzunehmen oder 'meine' für eine ganze Datei mit git zu akzeptieren
Ich glaube nicht, dass ein visual merge tool, und ich will auch nicht zu haben, um vi der konfliktbehafteten Datei und manuell wählen, der zwischen dem KOPF (von mir) und die importierten ändern (Ihr). Die meisten der Zeit, die ich entweder wollen Sie alle Ihre änderungen oder alle von mir. Häufig ist dies, weil mein Wechsel machte es upsteam und kommt zurück, um mich durch ein ziehen, kann aber leicht modifiziert an verschiedenen stellen.
Ist es ein Kommandozeilen-tool, die wird, loszuwerden, die Konflikt-Marker, und wählen Sie alle die eine oder andere Weise auf Grundlage meiner Wahl? Oder eine Reihe von git-Befehlen, die kann ich alias selber zu tun, jeder eine.
# accept mine
alias am="some_sequence;of;commands"
alias at="some_other_sequence;of;commands"
Dies zu tun, ist eher ärgerlich.
Für "accept mine', die ich versucht habe:
randy@sabotage ~/linus $ git merge test-branch
Auto-merging Makefile
CONFLICT (content): Merge conflict in Makefile
Automatic merge failed; fix conflicts and then commit the result.
randy@sabotage ~/linus $ git checkout Makefile
error: path 'Makefile' is unmerged
andy@sabotage ~/linus $ git reset --hard HEAD Makefile
fatal: Cannot do hard reset with paths.
Wie soll ich, um loszuwerden, diese Marker ändern?
Ich tun kann:
git reset HEAD Makefile; rm Makefile; git checkout Makefile
Aber das scheint mir eher rund, es muss einen besseren Weg geben. Und an diesem Punkt bin ich nicht sicher, ob git sogar denkt, der merge passiert ist, also ich glaube nicht, dass dies unbedingt auch funktioniert.
Gehen den anderen Weg, tut 'accept theirs' ist ebenso chaotisch.
Nur so kann ich es herausfinden, ist:
git show test-branch:Makefile > Makefile; git add Makefile;
Dieser gibt mir auch ein Durcheinander commit-Nachricht, die Konflikte: Makefile, zweimal.
Kann mir bitte jemand zeigen, wie die beiden oben genannten Aktionen auf eine einfachere Art und Weise? Dank
InformationsquelleAutor der Frage nosatalian | 2009-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung ist sehr einfach.
git checkout <filename>
versucht, Sie zu check out Datei aus der index, und daher nicht auf merge.Was Sie tun müssen, ist, (d.h. die Kasse eine Begehen):
Zur Kasse Ihre eigene version können Sie eine:
oder
oder
Zur Kasse die andere version können Sie eine:
oder
oder
Würden Sie auch brauchen, um ausführen "hinzufügen", um Sie zu markieren als "gelöst":
InformationsquelleAutor der Antwort Jakub Narębski
Versuchen Sie dies:
Akzeptieren ihrigen änderungen:
git merge --strategy-option theirs
Akzeptieren Ihre:
git merge --strategy-option ours
InformationsquelleAutor der Antwort Siva Mandadi
Basierend auf Jakub Antwort können Sie konfigurieren Sie die folgenden Aliase für git Komfort:
Sie Optional einen oder mehrere Pfade von Dateien, die zu beheben und die Standard-Lösung alles, was unter dem aktuellen Arbeitsverzeichnis, wenn keins angegeben.
Fügen Sie Sie der
[alias]
Abschnitt Ihrer~/.gitconfig
oder laufenInformationsquelleAutor der Antwort kynan
Basierend auf kynan Antwort, hier sind die gleichen Aliase, so modifiziert, dass Sie behandeln können Räume und erste Bindestriche in Dateinamen:
InformationsquelleAutor der Antwort Dar