Wie kann ich von einem git Zweig zum anderen eine Version einer Datei kopieren?
-
08-07-2019 - |
Frage
Ich habe zwei Zweige, die vollständig miteinander verschmolzen werden.
Nachdem jedoch die Zusammenführung erfolgt ist, erkenne ich, dass eine Datei, die von der Zusammenführung (jemand anderes tat ein Auto-Format, gah), und es wäre einfach leichter zu ändern verkorkste auf die neue Version in der anderen wurde Zweig, und dann wieder einsetzen meine eine Zeile ändern, nachdem es über in meinem Zweig zu bringen.
Also, was ist der einfachste Weg, in git, dies zu tun?
Lösung
Führen Sie dies aus der Branche, wo Sie die Datei wollen, um am Ende:
git checkout otherbranch myfile.txt
Allgemeine Formeln:
git checkout <commit_hash> <relative_path_to_file_or_dir>
git checkout <remote_name>/<branch_name> <file_or_dir>
Einige Anmerkungen (von Kommentaren):
- die Hash-commit verwenden Sie Dateien aus jedem ziehen begehen
- Dies funktioniert für Dateien und Verzeichnisse
- überschreibt die Datei
myfile.txt
undmydir
- Wildcards nicht funktionieren, aber relative Pfade tun
- Mehrere Pfade angegeben werden können
eine Alternative:
git show commit_id:path/to/file > path/to/file
Andere Tipps
beendete ich in dieser Frage auf einer ähnlichen Suche nach oben. In meinem Fall war auf der Suche ich eine Datei von einem anderen Zweig in aktuelles Arbeitsverzeichnis zu extrahieren, die von der Datei ursprünglichen Speicherort anders waren. Antwort :
git show TREEISH:path/to/file >path/to/local/file
Was ist mit der Kasse Befehl:
git diff --stat "$branch"
git checkout --merge "$branch" "$file"
git diff --stat "$branch"
madlep Antwort Nach kopieren Sie auch nur ein Verzeichnis von einem anderen Zweig mit dem Verzeichnis Blob.
git checkout other-branch app/**
In Bezug auf die Frage des op, wenn Sie nur eine Datei in dort geändert haben, werden diese funktionieren ^ _ ^
1) Stellen Sie sicher, Sie in Zweig sind, wo Sie eine Kopie der Datei benötigen.
für zB: Ich möchte Unterzweig-Datei im Master, so dass Sie in Master git checkout master
zur Kasse oder sollten
2) Jetzt bestimmte Datei Kasse allein Sie untergeordneten Zweig in Master mögen,
git checkout sub_branch file_path/my_file.ext
hier sub_branch
bedeutet, in dem Sie die Datei von Dateinamen gefolgt, die Sie brauchen zu kopieren.
Bitte beachten Sie, dass in der akzeptierten Antwort, die erste Option Stufen die gesamte Datei aus dem anderen Zweig (wie git add ...
durchgeführt worden ist), und dass die zweite Option führt einfach die Datei zu kopieren, aber die Änderungen nicht die Bühne (als ob Sie einfach die Datei manuell bearbeitet hatten und herausragende Unterschiede).
Git Kopie Datei von einem anderen Zweig, ohne es zu inszenieren
Änderungen statt (z 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
Änderungen herausragende (nicht inszeniert oder stationär):
$ 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")