„Git“ žyma tikrinama „atjungta HEAD“

Aš sukuriu scenarijų diegimą mano git projektui, ir aš tik pradėjau naudoti žymes. Pridėjau naują „ v2.0 žymą:

 git tag -a v2.0 -m "Launching version 2.0" 

Ir aš spustelėjau šią žymą nuotolinėje saugykloje

 git push --tags 

Kai bandau įdiegti scenarijų ir patikrinti v2.0 žymę, gaunu šį pranešimą:

Esate „atjungta HEAD“ būsena. Galite apsižvalgyti, atlikti eksperimentinius pakeitimus ir juos išspręsti, o jūs galite atsisakyti bet kokių jūsų padarytų įsipareigojimų, nepaveikdami jokių filialų, atlikdami kitą patikrinimą. Jei norite sukurti naują filialą, kad išsaugotumėte sukurtą įsipareigojimą, galite tai padaryti (dabar ar vėliau) naudodami -b su dar kartą pateiktu pareiškimu. Pavyzdys: dabar yra git checkout -b new_branch_name HEAD

Ar tai normalu? Duomenų saugykla yra sustabdyta, nes jei tai darau:

 git branch 

Gaunu šią išvestį:

 * (no branch) master 

Atsiprašau, jei tai akivaizdu, bet aš negalėjau suprasti.

144
07 апр. Khriz 07 Bal 2011-04-07 16:51 '11 at 16:51 PM 2011-04-07 16:51
@ 2 atsakymai

Na, pirmiausia keli terminai yra šiek tiek supaprastinti.

Git“ žymelėje (kaip ir daugelis kitų) - tai vadinama medine . Tai būdas atkreipti dėmesį į projekto istoriją. Medžiai gali būti žyma, įsipareigojimas, datos specifikatorius, ordinalinis arba daugelis kitų dalykų.

Dabar branch yra panašus į žymę, bet yra mobilus. Kai esate „įjungtas“ filialas ir įvykdote pataisą, filialas pereina į naują atliktą fiksavimo priemonę, nurodydamas dabartinę padėtį.

Jūsų HEAD yra rodyklė į šaką, kuri laikoma „srovė“. Paprastai, kai klonuojate kapinyną, HEAD nurodo į master , o tai savo ruožtu parodys įsipareigojimą. Kai atliksite kažką panašaus į „ git checkout experimental , pereisite į HEAD kad nukreiptumėte į šaką, kuri galėtų būti experimental , o tai gali reikšti skirtingą fiksavimą.

Dabar paaiškinimas.

Kai atliekate git checkout v2.0 , pereinate prie įsipareigojimo, kurio branch nenurodo. HEAD dabar HEAD „atjungta“ ir nenurodo filialo. Jei nuspręsite įvykdyti pataisą dabar (kaip jūs galite), nėra filialo rodyklės, kad atnaujintumėte, kad būtų galima stebėti šį pataisymą. Perjungus į kitą nustatymą, jūs prarasite šią naują pataisą. Štai ką jums pasakys pranešimas.

Paprastai galite pasakyti git checkout -b v2.0-fixes v2.0 . Tai sukurs naują šakos žymeklį, esantį įsipareigojimo medžio v2.0 taške (šiuo atveju žyma), ir tada perkelkite savo HEAD kad jį nurodytumėte. Dabar, jei įsipareigojate, jie gali būti stebimi (naudojant v2.0-fixes filialą), ir jūs galite dirbti kaip įprasta. Nėra nieko blogo su tuo, ką darėte, ypač jei tik norite pažvelgti į v2.0 kodą. Tačiau jei norite atlikti bet kokius pakeitimus, kuriuos norite stebėti, jums reikės filialo.

Turėtumėte šiek tiek laiko suprasti visą DAG modelio modelį. Tai stebėtinai paprasta ir supranta visas komandas.

383
07 апр. Atsakymą pateikė Noufal Ibrahim, balandžio 7 d. 2011-04-07 17:01 '11 prie 17:01 2011-04-07 17:01

Taip, tai gerai. Taip yra todėl, kad tikrinate vieną fiksaciją, neturinčią galvos. Ypač tai (anksčiau ar vėliau) nėra jokios pramonės vadovas.

Tačiau su šia sąlyga paprastai nėra problemų. Naują temą galite sukurti iš žyma, jei jis jaučiasi labiau pasitikintis :)

9
07 апр. Atsakymas, kurį pateikė KingCrunch Apr 07 2011-04-07 16:56 '11, 16:56, 2011-04-07 16:56

Kiti klausimai apie „ tags“ arba užduoti klausimą