606 Stimmen

Wie kann man nur eine einzelne Datei aus einem Git-Repository sparsam auschecken?

Wie kann ich nur eine Datei aus einem Git-Repository auschecken?

11 Stimmen

Was meinen Sie mit Auschecken? Eine Kopie von nur einer Datei aus einem entfernten Repository beziehen?

2 Stimmen

Wenn das betreffende Projektarchiv gitweb verwendet, können Sie die Datei einfach direkt von dort herunterladen. Wie ich weiter unten zu erklären versuche, ist das, was Sie fragen, nicht wirklich ein Standard-Git-Vorgang.

2 Stimmen

16voto

broc.seib Punkte 20286

Ganz einfach:

git checkout from-branch-name -- path/to/the/file/you/want

Dadurch wird der Checkout der from-branch-name Zweigstelle. Sie bleiben in dem Zweig, in dem Sie sich gerade befinden, und nur diese eine Datei wird aus dem angegebenen Zweig ausgecheckt.

Hier ist der relevante Teil der Manpage für git-checkout

git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>...
       When <paths> or --patch are given, git checkout does not switch
       branches. It updates the named paths in the working tree from the
       index file or from a named <tree-ish> (most often a commit). In
       this case, the -b and --track options are meaningless and giving
       either of them results in an error. The <tree-ish> argument can be
       used to specify a specific tree-ish (i.e. commit, tag or tree) to
       update the index for the given paths before updating the working
       tree.

Hut ab vor Ariejan de Vroom, der mir das hier beigebracht hat Blog-Beitrag .

4 Stimmen

Cool, wenn da nicht die Tatsache wäre, dass man erst klonen muss.

8voto

Paul Brannan Punkte 1495

Zwei Varianten zu dem, was bereits gesagt wurde:

git archive --format=tar --remote=git://git.foo.com/project.git HEAD:path/to/directory filename | tar -O -xf -

und:

git archive --format=zip --remote=git://git.foo.com/project.git HEAD:path/to/directory filename | funzip

Diese schreiben die Datei auf die Standardausgabe.

8voto

Fizer Khan Punkte 79079

Sie können dies tun, indem Sie

git archive --format=tar --remote=origin HEAD | tar xf -
git archive --format=tar --remote=origin HEAD <file> | tar xf -

7voto

Joseph Wu Punkte 4500

Angenommen, der Dateiname lautet 123.txt, dann funktioniert das bei mir:

git checkout --theirs  123.txt

Wenn sich die Datei in einem Verzeichnis A befindet, müssen Sie dieses korrekt angeben:

git checkout --theirs  "A/123.txt"

5voto

stefanB Punkte 72857

In Git werden Dateien nicht "ausgecheckt", bevor man sie aktualisiert - es scheint, als ob Sie genau das wollen.

Bei vielen Systemen wie clearcase, csv usw. müssen Sie eine Datei erst auschecken, bevor Sie Änderungen daran vornehmen können. Bei Git ist dies nicht erforderlich. Sie klonen ein Repository und nehmen dann Änderungen in Ihrer lokalen Kopie des Repositorys vor.

Sobald Sie die Dateien aktualisiert haben, können Sie dies tun:

git status

Um zu sehen, welche Dateien geändert wurden. Sie fügen die Dateien hinzu, die Sie übertragen möchten index zunächst mit ( index ist wie eine Liste, die eingecheckt werden muss):

git add .

ou

git add blah.c

Dann tun git status zeigt Ihnen, welche Dateien geändert wurden und welche sich in index bereit zum Commit oder Check-in.

Um Dateien an Ihre Kopie des Repositorys zu übergeben, tun Sie dies:

git commit -a -m "commit message here"

Voir git Website für Links zu Handbüchern und Anleitungen.

1 Stimmen

Und wenn Ihr Ziel darin besteht, diese einzelne Datei zu patchen und zurückzusenden, müssen Sie entweder pushen (aber wahrscheinlich haben Sie keinen Push-Zugang für dieses Projekt?) oder git format-patch um einen Patch zur Einreichung zu erstellen ( git format-patch -1 erstellt einen Patch nur für Ihren letzten Commit).

0 Stimmen

Danke, das war eine gute Erklärung für Git von Clearcase

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