Frage Wie man nur eine Datei von einem anderen Zweig bekommt


Ich benutze Git und arbeite an Master-Zweig. Dieser Zweig hat eine Datei namens app.js.

ich habe ein experiment Zweig, in dem ich eine Menge Änderungen und Tonnen von Commits gemacht habe. Jetzt möchte ich alle Änderungen nur dazu bringen app.js von experiment zu master Ast.

Wie mache ich das?

Wieder möchte ich keine Zusammenführung. Ich möchte nur alle Änderungen einbringen app.js von experiment verzweigen nach master Ast.


821
2018-03-02 15:15


Ursprung


Antworten:


git checkout master               # first get back to master
git checkout experiment -- app.js # then copy the version of app.js 
                                  # from branch "experiment"

Siehe auch Wie kann ich Änderungen einer Datei rückgängig machen?

Wie Jakub Narębski Erwähnungen in den Kommentaren:

git show experiment:path/to/app.js > app.js

funktioniert auch, außer dass, wie in der SO Frage detailliert "Wie kann man eine einzelne Datei von einer bestimmten Revision in Git abrufen?", müssen Sie den vollständigen Pfad aus dem Stammverzeichnis des Repos verwenden.
Daher der Pfad / to / app.js, den Jakub in seinem Beispiel verwendet hat.

Wie Eisig Erwähnungen im Kommentar:

Sie erhalten nur den neuesten Stand von app.js

Aber für git checkout oder git showkönnen Sie tatsächlich auf jede gewünschte Revision verweisen, wie in der SO-Frage dargestellt. "git check Revision einer Datei in git gui":

$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME

wäre das gleiche ist $ FILENAME ist ein vollständigen Pfad einer versionierten Datei.

$REVISION kann wie in gezeigt werden git rev-parse:

experiment@{yesterday}:app.js # app.js as it was yesterday 
experiment^:app.js            # app.js on the first commit parent
experiment@{2}:app.js         # app.js two commits ago

und so weiter.


1071
2018-03-02 15:23



Alles ist viel einfacher, benutze git checkout dafür.

Annehmen you're on master Zweig, um zu bekommen app.js from new-feature Zweig tun:

git checkout new-feature path/to/app.js

// note that there is no leading slash in the path!

Dadurch erhalten Sie den Inhalt der gewünschten Datei. Sie können wie immer Verwenden Sie einen Teil von sha1 anstelle von  neue Funktion  Zweigname um die Datei so zu erhalten, wie sie in diesem bestimmten Commit war.


235
2018-04-05 08:48



Ergänzend zu VonCs und chhhs Antworten.

git show experiment:path/to/relative/app.js > app.js
# If your current working directory is relative than just use
git show experiment:app.js > app.js

oder

git checkout experiment -- app.js

26
2017-12-08 02:22



Oder wenn Sie alle Dateien aus einem anderen Zweig möchten:

git checkout <brachname> -- .

4
2018-02-02 18:51



git checkout branch_name file_name

Beispiel:

git checkout master App.java

4
2018-05-11 09:43