1377 Stimmen

Wie kopiere ich eine Version einer einzelnen Datei von einem Git-Zweig in einen anderen?

Ich habe zwei Zweige, die vollständig zusammengeführt sind.

Nachdem die Zusammenführung abgeschlossen ist, stelle ich jedoch fest, dass eine Datei durch die Zusammenführung durcheinander gebracht wurde (jemand anderes hat eine automatische Formatierung vorgenommen, gah), und es wäre einfach einfacher, zur neuen Version im anderen Zweig zu wechseln und dann meine einzeilige Änderung wieder einzufügen, nachdem ich sie in meinen Zweig gebracht habe.

Wie lässt sich dies in Git am einfachsten bewerkstelligen?

24voto

6ft Dan Punkte 2265

Unter madlep's Antwort Sie können auch einfach ein Verzeichnis aus einem anderen Zweig mit dem Verzeichnisblob kopieren.

git checkout other-branch app/**

Was die Frage des Auftraggebers betrifft, wenn Sie nur eine Datei geändert haben, wird dies problemlos funktionieren.

6voto

user151841 Punkte 16279

Bitte beachten Sie, dass in der akzeptierten Antwort die erste Option Stufen die gesamte Datei aus dem anderen Zweig (wie git add ... durchgeführt wurde), und dass die zweite Option nur dazu führt, dass die Datei kopiert wird, die Änderungen aber nicht übernommen werden (als ob Sie die Datei gerade manuell bearbeitet hätten und es noch offene Differenzen gäbe).

Git-Datei aus einem anderen Zweig kopieren, ohne sie bereitzustellen

Etappierte Änderungen (z.B.. git add filename) :

$ git checkout directory/somefile.php feature-B

$ git status
On branch feature-A
Your branch is up-to-date with 'origin/feature-A'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   directory/somefile.php

Ausstehende Änderungen (nicht inszeniert oder begangen):

$ git show feature-B:directory/somefile.php > directory/somefile.php

$ git status
On branch feature-A
Your branch is up-to-date with 'origin/feature-A'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   directory/somefile.php

no changes added to commit (use "git add" and/or "git commit -a")

5voto

Sławomir Lenart Punkte 6134

Entschuldigung, aber niemand hat erwähnt, dass vor der Wiederherstellung einer Datei Sie wirklich eine Vorschau der lokalen Änderungen in Bezug auf diesen Zweig sehen wollen, also:

git diff <other-branch-name> -- <filename>

Wenn Sie dann einen Verlust akzeptieren (Überschreiben), können Sie nachziehen:

git restore --source <other-branch-name> <filename>
or
git checkout <other-branch-name> <filename>

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