Perkelkite esamą, nepriskirtą darbą į naują filialą „Git“

Aš pradėjau dirbti su nauja funkcija, o po kodavimo šiek tiek nusprendžiau, kad ši funkcija turėtų būti atskiroje šakoje.

Kaip perkelti esamus nesusijusius pakeitimus į naują filialą ir iš naujo nustatyti dabartinį?

Noriu iš naujo nustatyti esamą filialą, kartu išlaikydamas esamą darbą su nauja funkcija.

2540
08 сент. nustatė Dane O'Connor 08 rugsėjis 2009-09-08 18:57 '09 18:57 2009-09-08 18:57
@ 5 atsakymai

Naudokite šiuos veiksmus:

 git checkout -b <new-branch> 

Tai paliks jūsų dabartinį filialą, kurkite ir patikrinkite naują filialą ir išsaugokite visus pakeitimus. Tada galite padaryti naudodami:

 git add <files> 

ir pateikite naują filialą naudodami:

 git commit -m "<Brief description of this commit>" 

Darbo katalogo pakeitimai ir indekso pakeitimai dar nepriklauso jokiam filialui. Tai pasikeis, kai šie pakeitimai baigsis.

Jūs neturite iš naujo nustatyti šaltinio šakos, jis lieka toks, koks jis yra. Paskutinis įsipareigojimas <old-branch> vis dar bus tas pats. Taigi, jūs checkout -b ir tada išspręskite.

2999
08 сент. Atsakymas pateikiamas 08- uoju sep . 2009-09-08 18:59 '09, 18:59, 2009-09-08 18:59

Arba:

  • Išsaugokite dabartinius tempo pakeitimus:

    $ git stash

  • Sukurkite naują filialą pagal šią talpyklą ir pereikite prie naujo filialo:

    $ git stash branch <new-branch> stash@{0}

border=0

Taryba Jei norite sumažinti „Piniginės“ pavadinimo įvedimą, naudokite skirtuko klavišą.

257
19 июня '15 в 3:18 2015-06-19 03:18 atsakymą pateikė Robin Qiu birželio 19, 15 d. 3:18 2015-06-19 03:18

Jei kodavimo metu padarėte įsipareigojimus pagrindiniame filiale, bet dabar norite perkelti šiuos įsipareigojimus į kitą filialą:

  1. Nukopijuokite dabartinę istoriją į naują temą, taip pat atlikite visus neprisiimtus pakeitimus:

     git checkout -b <new-feature-branch> 
  2. Dabar priversti pradinį purviną filialą pasukti atgal: (neperjungus prie jo)

     git branch -f <previous-branch> <earlier-commit-id> 

    Pavyzdžiui:

     git branch -f master origin/master 

    arba jei padarėte 4 įrašus:

     git branch -f master HEAD~4 

Įspėjimas Atrodo, kad git branch -f master origin/master nustatys šios šakos stebėjimo informaciją. Todėl, jei sukonfigūravote master filialą stumti jį kažkur, išskyrus origin/master ši konfigūracija bus prarasta.

Alternatyva yra naudoti šią atstatymo techniką . Tačiau šiose instrukcijose bus atsisakyta bet kokių nepakeistų pakeitimų. Jei norite juos išsaugoti, pirmiausia paslėpkite juos ir atrakinkite juos gale.

37
12 февр. joeytwiddle atsakymas, pateiktas vasario 12 d. 2016-02-12 10:44 '16 at 10:44 2016-02-12 10:44

Jei tai padarysite, galite pasirinkti valdiklį, skirtą vienam įvykiui. Dažnai tai darau, kai pradėsiu dirbti su šeimininku, o tada norėčiau sukurti vietinį padalinį, prieš pradėdamas savo pradžią /.

 git cherry-pick <commitID> 

Čia galite daug nuveikti su vyšnių rinkiniu, kaip aprašyta čia , bet tai gali būti precedentas jums.

16
30 нояб. atsakymas suteikiamas slaptažodžiu 30 lapkričio. 2015-11-30 23:58 '15, 11:58 pm 2015-11-30 23:58

Bendrasis scenarijus yra toks: Pamiršau sukurti naują filialą naujai funkcijai ir atlikti visą darbą senosios šakos funkcijoje. Baigiau visus „senus“ darbus pagrindiniame filiale, ir noriu, kad mano naujas filialas vystytųsi iš „šeimininko“. Aš nepadariau vieno naujo savo darbo. Štai filialo struktūra: "meistras" → "senas_feature"

 git stash git checkout master git checkout -b "New_branch" git stash apply 
1
13 авг. Alex Burovo atsakymas 13 rug. 2018-08-13 19:07 '18, 07:07 val. 2018-08-13 19:07

Kiti klausimai apie žymes arba Ask a question