Ich würde verwenden git restore
(verfügbar seit Git 2.23):
git restore --source otherbranch path/to/myfile.txt
Warum ist sie besser als andere Optionen?
- standardmäßig
git restore
Dateien nur im Arbeitsverzeichnis ändern.
git checkout otherbranch -- path/to/myfile.txt
Kopieren Sie die Datei in das Arbeitsverzeichnis (Ihre Dateien auf der Festplatte), aber auch in den Staging-Bereich. Das ist ein ähnlicher Effekt, als wenn Sie die Datei manuell kopieren würden und git add
darauf. git restore
standardmäßig nur das Arbeitsverzeichnis ändern.
Um das gleiche Ergebnis wie bei git checkout otherbranch -- path/to/myfile.txt
können Sie schreiben git restore --source otherbranch --staged --worktree path/to/myfile.txt
- standardmäßig
git restore
löscht Dateien aus dem Arbeitsverzeichnis, wenn sie in einem anderen Zweig nicht vorhanden sind
git restore
kann verwendet werden, um den gesamten Ordner wiederherzustellen mit git restore --source otherbranch path/to/dir
. Eine ähnliche Operation können Sie durchführen mit git checkout
sondern git restore
löscht standardmäßig Dateien, die auf otherbranch
. Um zu git checkout
Verhaltensnutzung --overlay
opción.
Wenn es zum Beispiel weniger Dateien auf otherbranch
als im aktuellen Arbeitsverzeichnis (und diese Dateien sind Verfolgt ) ohne --overlay
Option git restore
werden sie gelöscht. Aber das ist ein gutes Standardverhalten, Sie wollen wahrscheinlich, dass der Zustand des Verzeichnisses "der gleiche ist wie in otherbranch
", nicht "dasselbe wie in otherbranch
aber mit zusätzlichen Dateien aus meinem aktuellen Zweig".
Um das gleiche Ergebnis wie bei git checkout otherbranch -- path/to/dir
können Sie schreiben git restore --source otherbranch --staged --worktree --overlay path/to/dir
git restore
verwendet keine Shell-Umleitung zum Erstellen von Dateien (nur Powershell-Problem)
git show otherbranch:path/to/myfile.txt > path/to/myfile.txt
verwendet die Standard-Shell-Umleitung. Wenn Sie PowerShell verwenden, könnte es Probleme mit der Textkodierung geben oder Sie könnten eine defekte Datei erhalten, wenn sie binär . Mit git restore
Das Ändern von Dateien erfolgt ausschließlich durch den git
ausführbar.