it-swarm.com.de

Wie kann ich die lokale Datei oder die entfernte Datei während des Zusammenführens mit Git und der Befehlszeile behalten?

Ich weiß, wie ich Änderungen mit vimdiff zusammenfassen kann, aber wenn ich nur weiß, dass die gesamte Datei aufbewahrt oder weggeworfen werden kann, wie mache ich das?

Ich möchte nicht vimdiff für jeden von ihnen öffnen, ich möchte einen Befehl ändern, der "lokal halten" oder "fern halten" sagt.

Ich habe eine Zusammenführung mit Dateien erhalten, die als geändert markiert sind, weil jemand sie unter Windows geöffnet, die EOL geändert und dann festgeschrieben hat. Beim Zusammenführen möchte ich nur meine eigene Version behalten und seine verwerfen.

Ich interessiere mich auch für das Gegenteil: Ich habe viel versaut und möchte die entfernte Datei akzeptieren und meine Änderungen verwerfen.

169
e-satis

Sie können auch:

git checkout --theirs /path/to/file

um die entfernte Datei zu behalten, und:

git checkout --ours /path/to/file

lokale Datei zu halten.

Dann git add sie und alles ist erledigt.

264

Dieser Ansatz scheint einfacher zu sein, da nicht jede Datei einzeln ausgewählt werden muss:

# keep remote files
git merge --strategy-option theirs
# keep local files
git merge --strategy-option ours

oder

# keep remote files
git pull -Xtheirs
# keep local files
git pull -Xours

Direkt kopiert von: Lösen von Git-Merge-Konflikten zugunsten ihrer Änderungen während eines Pulls

83
keflavich

git checkout {branch-name} -- {file-name}

Dadurch wird die Datei aus dem Zweig Ihrer Wahl verwendet.

Ich mag das, weil posh-git Autocomplete funktioniert großartig damit. Außerdem werden Unklarheiten dahingehend beseitigt, welcher Zweig entfernt und welcher lokal ist. Und --theirs hat sowieso nicht für mich gearbeitet.

12
Ben Wilde

Das Ende der Zeile finden Sie unter man git-merge:

--ignore-space-change 
--ignore-all-space 
--ignore-space-at-eol

Stellen Sie sicher, dass Sie autocrlf = false Und/oder safecrlf = false Zum Windows-Klon (.git/config) hinzufügen.

Verwenden von Git Mergetool

Wenn Sie ein Mergetool wie folgt konfigurieren:

git config mergetool.cp.cmd '/bin/cp -v "$REMOTE" "$MERGED"'
git config mergetool.cp.trustExitCode true

Dann ein einfaches

git mergetool --tool=cp
git mergetool --tool=cp -- paths/to/files.txt
git mergetool --tool=cp -y -- paths/to/files.txt # without prompting

Werde den Job machen

Verwenden einfacher Git-Befehle

In anderen Fällen gehe ich davon aus

git checkout HEAD -- path/to/myfile.txt

sollte den Trick machen

Editieren um das Gegenteil zu tun (weil du es vermasselt hast):

git checkout remote/branch_to_merge -- path/to/myfile.txt
9
sehe