Git invertuotas plotas

Turiu pakeitimų savo sustojimo zonoje, o kiti dar nepateikti (kai kurie failai keičiasi tiek sustojimo zonoje, tiek už jos ribų). Norėčiau apversti tarpinės srities turinį ir neatliktus pakeitimus. Ar yra tai, kad tai būtų galima atlikti be sudėtingesnių veiksmų, pvz., Vietinių šoninių šakų ar jų skirtumų, ar stashes [ir tt]? Ačiū.

9
31 янв. moala nustatytas sausio 31 d 2013-01-31 18:05 '13, 18:05 2013-01-31 18:05
@ 4 atsakymai

Štai kaip tai padaryti:

  • Priskirti laikinąjį fiksavimo indeksą
  • Užpildykite likutį iki antrinio laikino nustatymo
  • Perjungti pavedimų tvarką su interaktyviu permutavimu
  • Mišrus atstatymas
  • Minkštas atstatymas

Jis gali būti spausdinamas rankiniu būdu gana greitai, ypač jei naudojate Vim pranešimus, skirtus įvykdyti:

4
25 марта '13 в 15:16 2013-03-25 15:16 atsakymas pateikiamas kovo 25 d. 13 val. 15:16 2013-03-25 15:16

Remiantis gtd atsakymu ir galimybe apversti scenarijų, tai aš dabar naudojau:

 [alias] swaplast = !git tag _invert  git reset --hard HEAD~2  git cherry-pick _invert _invert~1  git tag -d _invert invertindex = !git commit -m tmp1  git add -A  git commit -m tmp2  git swaplast  git reset HEAD~1  git reset HEAD~1 --soft 
border=0

Parašiau savo dienoraštį čia: http://blog.ericwoodruff.me/2013/12/inverting-git-index.html

3
08 дек. Atsakymą pateikė Eric Woodruff 08 dec. 2013-12-08 22:43 '13, 10:43 val. 2013-12-08 22:43

Galbūt tai yra daugiau nei vienas būdas tai padaryti, bet manau, kad norėčiau pasinaudoti šiuo metodu - šiuo metu nėra jokių nuorodų, tačiau galite lengvai parašyti savo scenarijų, kad galėtumėte sekti šį procesą:

  • Sukurkite pataisą medžiagai, kuri šiuo metu yra jūsų darbiniame kataloge, bet ne jūsų indekse (tai, ką jūs git add )

     git diff-index --cached -p HEAD > /tmp/staged.patch 
  • Atstatykite savo indeksą ir darbo katalogą į HEAD

     git apply --index /tmp/unstaged.patch 
  • Taikykite fazinį pleistrą tik į savo darbo katalogą.

    3
31 янв. atsakymas duotas dvigubai sausio 31 d 2013-01-31 19:13 '13, 19:13, 2013-01-31 19:13

Štai ką aš naudoju šiai problemai išspręsti.

Pirma, git reset , kuris pašalins visus failus iš „sustojimo“ į „failus, nenustatytus tvirtinimui“. Failuose, kurie yra tiek „sustojimo“, tiek failų, nenustatytų tvirtinimui, bus pateikti paskutiniai pakeitimai, kurie šiuo metu yra jūsų „rinkmenose, nenustatytose nustatyti“

tada

git add /path/to/file failai, kuriuos reikia įtraukti į eilę

Ne visai trumpas, bet jis atlieka darbą

Be to, po git reset galite git checkout /path/to/file failams, kurie šiuo metu „nenustatyti įsipareigoti“, kurių nenorite pridėti prie scenos. Tai pašalins tam tikrus failus iš „nenustatyta įsipareigoti“.

tada paleiskite git add . kuri „scenoje“ pridės visus failus, esančius „nenustatyta įsipareigoti“, priklausomai nuo to, kas yra paprasčiau jūsų situacijai

0
31 янв. Alex Naspo atsakymas sausio 31 d 2013-01-31 18:13 '13, 18:13, 2013-01-31 18:13

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