581 Stimmen

Git: Wie kann man eine einzelne Datei von einem entfernten Ursprungsmaster aktualisieren/auschecken?

Das Szenario:

  1. Ich nehme einige Änderungen in einer einzelnen Datei lokal vor und führe git add , git commit y git push
  2. Die Datei wird in das Haupt-Repository des entfernten Ursprungs übertragen
  3. Ich habe ein weiteres lokales Repository, das über Capistrano mit der "remote_cache"-Methode aus diesem entfernten Repository bereitgestellt wird
  4. Jetzt möchte ich nicht die gesamte Anwendung bereitstellen, sondern nur diese einzelne Datei aktualisieren/auschecken.

Ist dies irgendwie mit Git möglich? Ich habe weder etwas gefunden, das funktioniert, noch konnte ich es herausfinden. Mit SVN habe ich einfach svn up file und voilà.

1260voto

qzio Punkte 11583

Es ist möglich (im bereitgestellten Repository), Folgendes zu tun

git fetch
git checkout origin/master -- path/to/file

Der Fetch lädt alle aktuellen Änderungen herunter, aber er fügt sie nicht in den aktuellen ausgecheckten Code (Arbeitsbereich) ein.

Beim Auschecken wird der Arbeitsbaum mit der jeweiligen Datei aus den heruntergeladenen Änderungen aktualisiert ( origin/master ).

Zumindest funktioniert das für mich bei kleinen Tippfehlerkorrekturen, bei denen es sich seltsam anfühlt, einen Zweig usw. zu erstellen, nur um ein Wort in einer Datei zu ändern.

86voto

VonC Punkte 1117238

Mit Git 2.23 (August 2019) und dem neuen (noch experimentellen) Befehl git restore , gesehen in " Wie kann man alle Dateien aus dem Arbeitsverzeichnis, aber nicht aus dem Staging-Bereich zurücksetzen? ", das wäre dann:

git fetch
git restore -s origin/master -- path/to/file

Das ist die Idee: git restore befasst sich nur mit Dateien, nicht mit Dateien Zweige als git checkout tut.
Siehe " Verwirrt durch git checkout "Das ist der Ort, an dem git switch kommt rein)


codersam fügt hinzu. in den Kommentaren :

In meinem Fall wollte ich die Daten von meinem Upstream abrufen (von dem ich mich abgespalten habe).
Also einfach geändert in:

git restore -s upstream/master -- path/to/file

81voto

Shagun Pruthi Punkte 1613

Der folgende Code hat bei mir funktioniert:

git fetch
git checkout <branch from which file needs to be fetched> <filepath>

25voto

Mathivanan Punkte 141

Einfach Es funktioniert für mich

git checkout origin/develop file_name.php

19voto

Dmitry R Punkte 2610
git archive --format=zip --remote=ssh://<user>@<host>/repos/<repo name> <tag or HEAD> <filename> > <output file name>.zip

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