Kaip atrakinti tik tam tikrus failus?

Aš paslėpiau savo pakeitimus. Dabar noriu atrakinti tik kai kuriuos failus iš piniginės. Kaip tai padaryti?

283
07 марта '13 в 9:26 2013-03-07 09:26 Morpheus yra nustatytas kovo 7 d. 13 val. 9:26 2013-03-07 09:26
@ 8 atsakymai

Kaip minėta toliau ir išsamiai aprašyta skyriuje " Kaip išgauti vieną failą (ar failo pakeitimus) iš git stash? ", Galite naudoti git checkout arba git show kad atkurtumėte tam tikrą failą.

 git checkout stash@{0} -- <filename> 

(Kai Jaime M. pakomentavo , dėl kai kurių kriauklių, pvz., Tcsh, kur jums reikia pabėgti nuo specialių simbolių, sintaksė yra tokia: git checkout 'stash@{0}' -- <filename> )

arba išsaugokite jį pagal kitą failo pavadinimą:

 git show stash@{0}:<full filename> > <newfile> 

(Atkreipkite dėmesį, kad čia <full filename> yra visas kelias į failą, palyginti su viršutinio projekto katalogu (pagalvokite: palyginti su stash@{0} )).

Youser pasiūlymai komentaruose :

Jei norite rankiniu būdu pasirinkti, kuriuos pakeitimus norite taikyti iš šio failo:

 git difftool stash@{0}..HEAD -- <filename> 

Vivek į komentarus priduria:

Atrodo, kad „ git checkout stash@{0} -- <filename> “ atkuria git checkout stash@{0} -- <filename> versiją tuo metu, kai buvo atliktas atėmimas - jis netaikomas (tik) išsaugoti šio failo pakeitimai.
Paskutinis:

 git diff stash@{0}^1 stash@{0} -- <filename> | git apply 

(kaip komentavo „ peterflynn“ , kai kuriais atvejais jums gali tekti | git apply -p1 “, pašalinant vieną ( p1 ) pagrindinį brūkšnį nuo tradicinių skirtumų būdų)


Kaip komentuota: „unstash“ ( git stash pop ), tada:

  • pridėkite, ką norite išsaugoti indekse ( git add )
  • paslėpti poilsį: git stash --keep-index

Paskutinis elementas yra tai, kas leidžia išsaugoti kai kuriuos failus, kai kiti yra saugomi.
Tai iliustruojama skyriujeKaip išsaugoti tik vieną failą iš kelių pakeistų failų “.

333
07 марта '13 в 9:39 2013-03-07 09:39 atsakymą pateikė „ VonC “ kovo 7 d. 13 val. 9:39 2013-03-07 09:39
 git checkout stash@{N} <File(s)/Folder(s) path> 

Pvz. Jei norite atkurti tik failą. /test.c ir. / įtraukti iš paskutinio paslėpto failo,

 git checkout stash@{0} ./test.c ./include 
110
21 марта '14 в 12:44 2014-03-21 12:44 atsakymą pateikė Balamurugan A kovo 21 d. 14 val. 12:44 2014-03-21 12:44

Manau, kad atsakymas į VonC tikriausiai yra tai, ko norite, bet čia galite pasirinkti „git taikyti“:

 git show stash@{0}:MyFile.txt > MyFile.txt 
35
07 марта '13 в 19:05 2013-03-07 19:05 Atsakymą pateikė Mike Monkiewicz kovo 7 d. 13 val. 19.05 val. 2013-03-07 19:05

Jei git stash pop (be konfliktų), jis bus pašalintas po to, kai bus naudojamas. Bet jei naudosite git stash apply , jis pritaikys pleistrą neišimdamas jo iš sąrašo. Tada galite grąžinti nepageidaujamus pakeitimus su git checkout -- files...

10
07 марта '13 в 9:44 2013-03-07 09:44 Atsakymą pateikė Ben Jackson , kovo 7 d. 13 d., 9:44 2013-03-07 09:44

Visų pirma įrašykite visus talpyklos

 git stash list 

 stash@{0}: WIP on Produktkonfigurator: 132c06a5 Cursor bei glyphicon plus und close zu zeigende Hand ändern stash@{1}: WIP on Produktkonfigurator: 132c06a5 Cursor bei glyphicon plus und close zu zeigende Hand ändern stash@{2}: WIP on master: 7e450c81 Merge branch 'Offlineseite' 

Tada parodykite, kurie failai yra talpykloje (pasirinkdami talpyklą 1):

 git stash show 1 --name-only //Hint: you can also write //git stash show stash@{1} --name-only 

  ajax/product.php ajax/productPrice.php errors/Company/js/offlineMain.phtml errors/Company/mage.php errors/Company/page.phtml js/konfigurator/konfigurator.js 

Tada pritaikykite norimą failą:

 git checkout stash@{1} -- <filename> 

arba visą aplanką:

 git checkout stash@{1} /errors 

Tai taip pat veikia be -- bet rekomenduojama juos naudoti. Žr. Šį įrašą.

Taip pat yra įprasta atpažinti dvigubą brūkšnelį kaip signalą, kad sustabdytų vertimo galimybes, ir visus tolesnius argumentus traktuoti tiesiogiškai.

8
07 июня '18 в 11:31 2018-06-07 11:31 atsakymas pateikiamas „ Juodasis birželio 07“ 18 val. 11:31. 2018-06-07 11:31

Kitas būdas:

 git diff stash@{N}^! -- path/to/file1 path/to/file2 | git apply -R 
3
16 мая '18 в 15:12 2018-05-16 15:12 atsakė Lacho Tomovui gegužės 18 d. 18 val. 15:12 2018-05-16 15:12

Aš tai naudoju

 git rm --cached your/path/to/file 
0
16 нояб. Herve Mutombo atsakymas lapkričio 16 d. 2017-11-16 17:18 '17, 17:18, 2017-11-16 17:18

„Windows“ vartotojams: garbanotieji petnešos turi ypatingą reikšmę „PowerShell“. Jį galite pridėti prie atskirų kabučių arba pabėgti su backtick pagalba. Pavyzdžiui:

git checkout 'stash@{0}' YourFile

Be to, galite gauti klaidos pranešimą:

Unknown switch 'e'

0
15 янв. Janac Meena atsakė sausio 15 d. 2019-01-15 18:43 '19, 18:43 pm 2019-01-15 18:43

Peržiūrėkite kitus klausimus apie „ žymes arba užduokite klausimą