it-swarm.com.de

Ist es möglich, nur eine Datei in Git zu ziehen?

Ich arbeite an einem Git-Zweig, der einige fehlerhafte Tests enthält, und ich möchte diese Tests aus einem anderen Zweig ziehen (Änderungen zusammenführen, nicht nur überschreiben), in dem sie bereits behoben sind.

Ich weiß, dass ich das kann

git pull Origin that_other_branch

aber dies wird versuchen, viele andere Dateien zusammenzuführen, dafür bin ich noch nicht bereit.

Ist es möglich, nur die angegebene Datei (und nicht alles) aus diesem anderen Zweig zu ziehen und zusammenzuführen?

Dies ist kein Duplikat von Git-Pull-Anforderung für nur eine Datei, da alle Antworten auf diese Frage darauf lauten, wie die lokale Wiederherstellung rückgängig gemacht werden kann Die Datei wurde in die Repository-Version geändert, ohne dass Verzweigungen geändert wurden.

148
h22

Sie können auf diese Weise nur eine Datei abrufen und dann auschecken:

git fetch
git checkout -m <revision> <yourfilepath>
git add <yourfilepath>
git commit

In Bezug auf den Befehl git checkout:<revision> - Ein Zweigname, dh Origin/master<yourfilepath> Enthält nicht den Repository-Namen (den Sie) kann durch Klicken auf die Schaltfläche copy path auf einer Dateiseite auf GitHub) erhalten werden, dh README.md

128
aleroot

Hier ist eine etwas einfachere Methode, die ich mir gerade ausgedacht habe:

git fetch {remote}
git checkout FETCH_HEAD -- {file}
233
Chris
git checkout master -- myplugin.js

master = Filialname

myplugin.js = Dateiname

10
Mawardy

@ Mawardys Antwort funktionierte für mich, aber meine Änderungen wurden auf der Fernbedienung vorgenommen, sodass ich den Ursprung angeben musste

git checkout Origin/master -- {filename}
7
Luke Flournoy

Ja, hier ist der Prozess:

# Navigate to a directory and initiate a local repository
git init        

# Add remote repository to be tracked for changes:   
git remote add Origin https://github.com/username/repository_name.git

# Track all changes made on above remote repository
# This will show files on remote repository not available on local repository
git fetch

# Add file present in staging area for checkout
git check Origin/master -m /path/to/file
# NOTE: /path/to/file is a relative path from repository_name
git add /path/to/file

# Verify track of file(s) being committed to local repository
git status

# Commit to local repository
git commit -m "commit message"

# You may perform a final check of the staging area again with git status
1
Saurabh