Kaip gauti tik vieną failą iš kito filialo

Aš naudoju gitą ir darbą pagrindiniame filiale. Ši tema turi failą pavadinimu app.js

Turiu experiment šaką, kurioje aš padariau krūva pakeitimų ir tonų įsipareigojimų. Dabar noriu atlikti visus pakeitimus, padarytus tik iš experiment šakos į „ master .

Kaip tai padaryti?

Aš nenoriu dar kartą sujungti. Aš tiesiog noriu atlikti visus pakeitimus programoje „ app.jsexperiment šakos į master filialą.

657
02 марта '10 в 18:15 2010-03-02 18:15 Nickas Vanderbiltas paklausė 02 kovo 10 d. 18:15 2010-03-02 18:15
@ 4 atsakymai
 git checkout master # first get back to master git checkout experiment -- app.js # then copy the version of app.js # from branch "experiment" 

Taip pat žiūrėkite, kaip atšaukti vieno failo pakeitimus?

Kaip Jakubas Narębskis minėjo komentaruose:

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

taip pat veikia, išskyrus tai, kad, kaip aprašyta SO klausime „ Kaip gauti vieną failą iš konkrečios versijos„ Git “? “, turite naudoti visą maršrutą iš repo šakninio katalogo.
Todėl kelias / //app.js, kurį Yakub naudojo jo pavyzdyje.

Kaip Frosty paminėta komentaruose:

gausite tik naujausią app.js

Tačiau „ git checkout arba „ git show jūs iš tikrųjų galite remtis bet kokia norima pataisa, kaip parodyta SO „ git peržiūros patikrinimo faile git gui “ klausime:

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

bus tas pats: $ FILENAME yra visas versijos failo kelias .

$REVISION gali būti toks, kaip parodyta 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 

ir pan

851
02 марта '10 в 18:23 2010-03-02 18:23 atsakymą pateikė „ VonC“ kovo 2 d. 10 d. 18:23 2010-03-02 18:23

Viskas yra daug paprastesnė, naudokite git checkout.

Tarkime, you're on master kad gautumėte atsakymą app.js from new-feature :

 git checkout new-feature path/to/app.js // note that there is no leading slash in the path! 

Tai leis pasiekti norimo failo turinį. Kaip visada, galite naudoti „sha1“ dalį vietoj naujos šakos pavadinimo funkcijos, kad gautumėte failą taip, kaip jis buvo šiame konkrečiame įvykyje.

179
05 апр. Atsakymas, kurį pateikė Dmitrijus Avtonomovas, balandžio 05 2012-04-05 11:48 '12, 11:48, 2012-04-05 11:48

Be atsakymų VonC ir chhh.

 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 

arba

 git checkout experiment -- app.js 
16
08 дек. Atsakymas, kurį pateikė AlexLordThorsen Dec 08 2015-12-08 05:22 '15 at 5:22 2015-12-08 05:22

Arba aš norėjau, kad visi failai iš kitos šakos būtų tokie:

 git checkout <brachname> -- . 
-3
02 февр. Atsakymą pateikė Jesteris 02 Feb. 2017-02-02 21:51 '17, 9:51 pm 2017-02-02 21:51

Kiti klausimai apie „ žymes arba užduoti klausimą