Wie man nur eine Datei aus einem anderen Zweig
Ich bin mit git und arbeiten auf master-Zweig. Dieser Zweig hat eine Datei namens app.js
.
Ich habe eine experiment
Filiale, in der ich eine Reihe von änderungen und Tonnen verpflichtet. Nun möchte ich alle änderungen gemacht nur app.js
aus experiment
zu master
Zweig.
Wie mache ich das?
Wieder einmal will ich nicht von einem merge. Ich will einfach nur, um die änderungen in app.js
aus experiment
Zweig zu master
Zweig.
dies ist ein Duplikat von Wie kopiere ich eine version einer einzelnen Datei aus einem git-Zweig zu einer anderen?
Ausgenommen beantworten, und andere wie der heute Antwort gewusst wie: kopieren von Datei-Inhalten, das ist, was ich wollte, selbst wenn ich fand, dass man. Jedoch, wenn Sie genau Lesen, Nick wollte änderungen mit sich bringen, nicht volle text, und die Datei, in
Ausgenommen beantworten, und andere wie der heute Antwort gewusst wie: kopieren von Datei-Inhalten, das ist, was ich wollte, selbst wenn ich fand, dass man. Jedoch, wenn Sie genau Lesen, Nick wollte änderungen mit sich bringen, nicht volle text, und die Datei, in
master
können abweichen, von experiment
, z.B. können die änderungen enthalten, zusammengeführt aus anderen Branchen, die verloren gehen würden, in der Datei wird nur kopiert. P. S. auf der anderen Seite will er nicht Zusammenführen, aber soweit ich weiß git merge
Begriff ist für die Branche und nicht für die spezifische Datei, also kein Widerspruch.InformationsquelleAutor Nick Vanderbilt | 2010-03-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Siehe auch git gewusst wie: Rückgängigmachen von änderungen einer Datei?
Als Jakub Narębski erwähnt in den Kommentaren:
funktioniert auch, außer dass, wie oben in der Frage ALSO "Gewusst wie: abrufen einer einzelnen Datei, die aus bestimmten revision in Git?", müssen Sie den vollständigen Pfad vom root-Verzeichnis der repo.
Daher der path/to/app.js verwendet von Jakub in seinem Beispiel.
Als Frosty erwähnt in dem Kommentar:
Aber, für
git checkout
odergit show
können Sie tatsächlich auf jede änderung, die Sie wollen, wie dargestellt in der ALSO die Frage "git checkout revision einer Datei im git-gui":wäre die gleiche Datei $FILENAME ist ein vollständigen Pfad einer versionierten Datei.
$REVISION
werden kann, wie gezeigt, ingit rev-parse
:und so weiter.
schmijos fügt in den Kommentaren:
Oder
git show experiment:path/to/app.js > app.js
Sie sollten in der Lage sein zu importieren (checkout) einer Datei aus jedem Zweig zu jedem aktuellen Zweig. Wenn Sie nicht können, das kann eine gute Frage hier, mit speziellen details wie die genaue Fehlermeldung, und die version von Git und OS verwendet.
In einem sub-Verzeichnis, können Sie auch
experiment:./app.js
. (Sie don T müssen geben Sie den vollständigen Pfad.) Ich habe gelernt, diesen Dank an die sehr hilfreiche Fehlermeldung git mir gab: "meinten Sie 'mybranch:voller/Pfad/zu/meiner/Datei.xsl' aka 'mybranch:./Datei.xsl'?" Ja, habe ich! Ich glaube nicht, dass ich jemals so begeistert von einer fatal error Meldung.Ja, ich erwähnt, dass Sie in stackoverflow.com/a/21066489/6309, wo git show würde nicht ändern, die index, aber git checkout ändern des index.
InformationsquelleAutor VonC
Ist alles viel einfacher, verwenden Sie git checkout.
Angenommen
you're on master
Zweig, umapp.js from new-feature
Zweig tun:So bringen Sie den Inhalt der gewünschten Datei. Sie können, wie immer, Teil der sha1-statt new-feature branch name, um die Datei in einem bestimmten commit.
git checkout origin/source_branch path/to/file
denn wenn Sie versäumt haben, aktualisieren Sie die source-Zweig von Ihrem lokalen repo, erhalten Sie möglicherweise eine alte version der Datei...Fragen Sie mich, wie ich weiß. 😉Sollten wir nicht tun
git checkout origin source_branch path/to/file
um die Filiale auf der Fernbedienung? So ist es SEHR die Letzte version der Datei? Siehe diesen link für den Unterschied zwischen diesen beiden Befehlen : stackoverflow.com/questions/26125162/...die Frage nicht zu erwähnen, Fernbedienungen, also die Annahme, dass es eine rein lokale repo
Wird dieser Befehl bringt die Datei ist Geschichte, oder nur die Letzte version der Datei?
Dies scheint automatisch der Bühne der ausgecheckten Datei. Ist es möglich, das gleiche zu tun, ohne Inszenierung?
InformationsquelleAutor Dmitry Avtonomov
Ergänzende VonC und chhh Antworten.
oder
--
) zwischen den branch-Namen und-Pfade optional? Ist es nur um zu verhindern, dass Pfade, die beginnen würde, mit einem Strich, wird behandelt, als Optionen / Schalter?Ehrlich gesagt, weiß ich nicht. Ich habe gar nicht gemerkt, dass ich vergessen hatte, die double dash, bis Sie darauf hingewiesen.
git show branch:path
. Meine neue Lieblings-git-Befehl.Die
--
ist optional, aber es ist mehr nützlich, um Konflikte zu vermeiden mit eigenen Namen. Zum Beispielgit checkout -- foo
bedeutet "check out Datei foo vom KOPF" (dh. überschreiben von lokalen änderungen in foo, ie. eine Teilmenge vongit reset --hard
), abergit checkout foo
könnte bedeuten, dass oder "let' s go to branch foo".Downvote. fatal: Invalid object name '- Funktion/2020.04.02'
InformationsquelleAutor AlexLordThorsen
Beispiel:
git-version 2.17.1.windows.2
InformationsquelleAutor Sarath
Oder wenn Sie möchten, dass alle Dateien aus einem anderen Zweig:
diese ersetzt die vorhandenen Dateien, anstatt Zusammenführen
Diese
.
macht einen großen Unterschied: statt sich in einen anderen Zweig kopiert es alle Dateien aus, während immer noch so dass Sie auf dem aktuellen. Bekommen Sie Inhalte aus anderen Zweig ohne in es.InformationsquelleAutor Jester
Überprüfen Sie die Datei auf github, und ziehen Sie es von dort
Dies ist ein pragmatischer Ansatz, der nicht direkt beantworten die OP, aber einige haben festgestellt, hilfreich: Sie
Wenn die Branche in Frage ist auf GitHub, dann können Sie navigieren zu den gewünschten Zweig und die Datei mit einem der vielen tools, die GitHub bietet, dann klicken Sie auf " Raw " finden Sie nur-text und (Optional) kopieren und fügen Sie den gewünschten text ein.
Ich mag diesen Ansatz, weil es Ihnen ermöglicht, Blick auf die remote-Datei in seiner Gesamtheit, bevor Sie ziehen Sie es zu Ihrem lokalen Computer.
InformationsquelleAutor fearless_fool