511 Stimmen

Wie führe ich Änderungen an einer einzigen Datei zusammen, anstatt Commits zusammenzuführen?

Ich habe zwei Zweige (A und B) und möchte eine einzelne Datei aus Zweig A mit einer entsprechenden einzelnen Datei aus Zweig B zusammenführen.

8voto

user1854182 Punkte 601

Der folgende Befehl wird (1) vergleicht die Datei des richtigen Zweigs mit dem Master (2) fragt Sie interaktiv, welche Änderungen übernommen werden sollen.

git checkout --patch master <fn>

1voto

jbirkel Punkte 27

Angenommen, B ist der aktuelle Zweig:

$ git diff A <file-path> > patch.tmp
$ git apply patch.tmp -R

Beachten Sie, dass damit nur Änderungen an der lokalen Datei vorgenommen werden. Sie müssen sie anschließend festschreiben.

1voto

Salami Punkte 2429

Sie können die alte Version der zusammenzuführenden Datei auschecken, sie unter einem anderen Namen speichern und dann Ihr beliebiges Zusammenführungsprogramm auf die beiden Dateien anwenden.

z. B.

git show B:src/common/store.ts > /tmp/store.ts (wobei B der Name der Verzweigung/des Commits/der Markierung ist)

meld src/common/store.ts /tmp/store.ts

0voto

Soup Punkte 1649

Meine Bearbeitung wurde abgelehnt, also füge ich hier an, wie man Änderungen aus einem entfernten Zweig zusammenführt.

Wenn Sie dies nach einer fehlerhaften Zusammenführung tun müssen, können Sie wie folgt vorgehen:

# If you did a git pull and it broke something, do this first
# Find the one before the merge, copy the SHA1
git reflog
git reset --hard <sha1>

# Get remote updates but DONT auto merge it
git fetch github 

# Checkout to your mainline so your branch is correct.
git checkout develop 

# Make a new branch where you'll be applying matches
git checkout -b manual-merge-github-develop

# Apply your patches
git checkout --patch github/develop path/to/file
...

# Merge changes back in
git checkout develop
git merge manual-merge-github-develop # optionally add --no-ff

# You'll probably have to
git push -f # make sure you know what you're doing.

0voto

Noob Punkte 1

Ich werde es tun als

git format-patch branch_old..branch_new file

wird ein Patch für die Datei erstellt.

Patch auf Zielzweig_alt anwenden

git am blahblah.patch

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X