Mano pagrindinėje šakoje turiu užverti ir ištrinti „vidurinį“ įrašą. Kaip tai padaryti?

Pavyzdžiui, kitoje pagrindinėje šakoje turiu pašalinti tik įsipareigojimą af5c7bf16e6f04321f966b4231371b21475bc4da, kuri yra antroji dėl ankstesnio perkrovimo:

 commit 60b413512e616997c8b929012cf9ca56bf5c9113 Author: Luca G. Soave <luca.soave@gmail.com> Date: Tue Apr 12 23:50:15 2011 +0200 add generic config/initializers/omniauth.example.rb commit af5c7bf16e6f04321f966b4231371b21475bc4da Author: Luca G. Soave <luca.soave@gmail.com> Date: Fri Apr 22 00:15:50 2011 +0200 show github user info if logged commit e6523efada4d75084e81971c4dc2aec621d45530 Author: Luca G. Soave <luca.soave@gmail.com> Date: Fri Apr 22 17:20:48 2011 +0200 add multiple .container at blueprint layout commit 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22 Author: Luca G. Soave <luca.soave@gmail.com> Date: Thu Apr 21 19:55:57 2011 +0200 add %h1 Fantastic Logo + .right for 'Sign in with Github' 

Man reikia valdyti

  • Pirmoji fiksacija yra 60b413512e616997c8b929012cf9ca56bf5c9113,
  • Trečiasis laikiklis e6523efada4d75084e81971c4dc2aec621d45530 ir
  • Paskutinis nustatymas 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22

„atmesti“ tik antrąją fiksaciją af5c7bf16e6f04321f966b4231371b21475bc4da

Kaip tai padaryti? Ačiū iš anksto Luke

48
22 апр. nustatė Luca G. Soave balandžio 22 d 2011-04-22 18:48 '11, 18:48, 2011-04-22 18:48
@ 3 atsakymai

Atkurti arba grąžinti yra parametrai. „Rebase“ iš tikrųjų pašalins pataisą iš istorijos, kad atrodytų, kad antrasis pataisymas niekada nebuvo. Tai bus problema, jei pagrindinį filialą perkelsite į kitas saugyklas. Jei šiuo atveju bandysite spustelėti iš naujo, „git“ suteiks klaidą su klaida, kuri nesusijusi su sparčiuoju pirmyn.

Grįžti yra tinkamas sprendimas, kai filialas perkeliamas į kitas saugyklas. git revert af5c7bf16 sukurs naują fiksatorių, kuris paprasčiausiai pakeis af5c7bf16 padarytus pakeitimus. Taigi, istorija nėra perrašoma, jūs nuolat įrašote klaidą, o kitas perskirstymas bus stumiamas.

Čia yra geras būdas ištrinti: git rebase -i <commit>^ Tai leis jums įsipareigoti prieš pat norimą ištrinti. Interaktyvus redaktorius jums parodys, kad visi sąrašai, kuriuos sugrįžta prie šio taško, bus pateikti. Galite pasirinkti, skvošas ir kt. Tokiu atveju ištrinkite norimą ištrinti įsipareigojimų eilutę ir išsaugokite failą. „Rebase“ užbaigs darbą.

63
22 апр. Atsakymą pateikė JCotton balandžio 22 d 2011-04-22 19:23 '11, 19:23, 2011-04-22 19:23

Jei naujinimas yra galimybė, galite iš naujo įdiegti ir tiesiog atsisakyti:

 $ git rebase -i 414ceffc^ 

Jei perkėlimas nėra parinktis, galite tiesiog grąžinti:

 $ git revert af5c7bf16 
19
22 апр. Atsakymas pateikiamas mipadi 22 balandžio. 2011-04-22 19:11 '11, 19:11, 2011-04-22 19:11

Nepaisant visų čia gautų originalių kredito atsakymų, neradau, kad jie būtų tinkamai atsakę į klausimą. Jei atsidursite tokioje situacijoje, kai reikia išimti fiksuojamą ar pataisų rinkinį iš istorijos, tai yra tai, ką siūlau:

  • Sukurkite naują galvutę iš galvos, kurioje yra visi įsipareigojimai, ir perjunkite į jį.
  • Perkelkite naują filialą atgal į tašką, kur norite pradėti naują bazę.
  • Tada (čia yra pagrindinis punktas) vyšnios pasirinkti kitą, kurį iš tikrųjų norite taikyti po šaltinio šakos į naują, ir praleiskite tuos įsipareigojimus, kurių jums nereikia (t. Y. Tuos, kuriuos ištrinate).
  • Jei norite, pervadinkite pradinį filialą į tai, kas nurodo senąjį kodą, ir pervadinkite naują filialą, iš kurio buvo išduotas originalas.
  • Galiausiai spustelėkite pakeitimus, esančius nuotoliniame repo (jei naudojamas). Gali tekti naudoti „push push“. Jei jūsų bendradarbiai susidūrė su problemomis, gali būti lengviau vėl klonuoti repo iš nuotolinio šaltinio. Bet kokiu atveju, jūs greičiausiai norėsite su jais kalbėti, jei vis dar vemiate iš savo istorijos vidurio!

„Cherry Picking Information“: Ką daro vyšnių statyba?

Štai keletas iš jų, kurie tai daro su vėžlių git (kaip aš ką tik padariau). Tai tikrai lengviau naudoti gui naudingumą šiems operacijų tipams! Vyšnių rinkiklis naudojant „TortoiseGit“

5
04 авг. Atsakymą pateikė BuvinJ 04 rug . 2017-08-04 02:16 '17 at 2:16 am 2017-08-04 02:16