Git - reset közzététele titkok

Állítsa vissza a közzététel titkok

három fa

Deal visszaállító parancsok és pénztár könnyebb lesz, ha azt feltételezzük, hogy a tartalma Git kezeli a három különböző fák. Itt, a „fa”, mi azt jelenti, „egy sor fájl”, és nem egy speciális adatszerkezet. (Bizonyos esetekben, az index nem viselkedik pontosan olyan, mint a fa, de a jelenlegi célra könnyebb bemutatni, hogy ez így.)

Normális működését, Git működik három fa:

HEAD - a mutató az aktuális ág, amely viszont egy mutató az utolsó végrehajtási készült ebben a témában. Ez azt jelenti, hogy a szülő lesz HEAD létre kell hozni egy elkövetni. Általános szabály, hogy a legegyszerűbb megfontoltabb HEAD pillanatkép a legutóbbi elkövetni.

Tény, hogy elég könnyen belátható, hogy ez egy pillanatkép. Az alábbiakban egy példát, hogy megszerezze a könyvtár tartalmát, és az ellenőrző összegeket az egyes fájlok a HEAD:

cat-file parancsot, és ls-fa a „hivatalos” (vízvezeték) parancsok belsőleg használt és nem szükséges a napi munka, de segítenek megérteni, mi is történik valójában.

Index - ez a következő tervezett véglegesítés. Azt is említette ezt a fogalmat, mint a „staging területen változásokat” Git - mi Git néz futtatásakor git commit.

Git feltölti az index lista az eredeti minden fájl tartalmát, hogy terheletlen utoljára abba a könyvtárba. Akkor részben pótolja ezeket a fájlokat az új verziók és a „git commit” parancsot átalakítja a változás a fa az új elkövetni.

Ismét itt a szolgáltatás igénybevételéhez ls-fájlokat. ami azt mutatja meg, hogyan néz ki most a kódját.

Technikailag az index nem egy fa struktúra, sőt, ez végre egy tömörített lista (lapított manifeszt) -, de a mi szempontunkból ez az ábrázolás elegendő.

munkakönyvtárba

Végül van egy működő könyvtár. Két másik fák megtartják tartalmának hatékony, de kényelmetlen belsejébe .git könyvtárban. Working Termék kicsomagolja azt a tényleges fájlok, így könnyebb szerkeszteni őket. Tekintsük munkakönyvtárba homokozóban. ahol ki lehet próbálni a módosításokat, mielőtt elkötelezné őket az index (átmeneti terület változások), majd a történelemben.

folyamat

A fő célja a Git - takarít a képek állandóan javítja a feltétele a projekt szabályozásával a három fák.

Git - reset közzététele titkok

Git - reset közzététele titkok

Ebben a szakaszban csak a dolgozó könyvtárfát adatait tartalmazza.

Most szeretnénk elkövetni egy fájl, így használjuk git hozzá, hogy másolja a tartalmát a munka könyvtár az Index.

Git - reset közzététele titkok

Aztán, mi végre a parancsot git commit. amely tárolja a tartalmát az index megváltoztathatatlan pillanatfelvétel létrehoz egy objektumot, amely elkövetni rámutat a pillanatfelvétel, és frissíti a mester, hogy ez is rámutatott arra, hogy kötelezzék.

Git - reset közzététele titkok

Ha most fut git állapotát. nem fogjuk látni semmi változást, hiszen mindhárom ugyanazon a fán.

Most szeretnénk, hogy módosítsa a fájlt, és zakomitit azt. Mi megy végig ugyanazon eljárás Először szerkeszteni a fájlt a következő munkanapon könyvtárban. Nevezzük ezt v2 verziója a fájl, és jelezzük a piros.

Git - reset közzététele titkok

Most, ha futunk git állapotát. azt látjuk, hogy a fájl pirossal kiemelt részében az „A változások nem hajlandó elkövetni”, ahogy azt képviseli az index és a munka könyvtár más. Aztán futunk git hozzá ezt a fájlt, hogy azt az index.

Git - reset közzététele titkok

Most, ha futunk git állapotát. azt látjuk, hogy a fájl zöld színnel a „Változások, hogy zakommicheny”, mint index és a fej különböző - azaz, a következő tervezett elkövetni most eltér az utolsó elkövetni. Végül, mi fut git commit. hogy végre a véglegesítés.

Git - reset közzététele titkok

Most git status parancs nem mutat semmit, mert megint mindhárom ugyanazon a fán.

Váltás ágak és a klónozás megy keresztül egy hasonló folyamat. Amikor bekapcsoljuk (pénztár) a fióktelep, HEAD is kezd mutatni egy új ága, az index helyébe kép elkövetni ezt a szálat, majd a tartalmát az index másolt munkakönyvtáradba.

kinevezés visszaállítás

Reset parancsot érthetőbbé válik, ha figyelembe vesszük azt a fentiek fényében.

Az alábbi példák azt feltételezik, hogy ismét változott a file.txt fájlt, és követnek el, hogy egy harmadik alkalommal. Így a történet most így néz ki:

Git - reset közzététele titkok

Térjünk most nyoma alaposan, hogy mi történik, ha hívja vissza. Ez a parancs egy egyszerű és kiszámítható módon kezeli a három fa, hogy létezik a Git. Ellátja három alapvető műveleteket.

1. lépés: Mozgás HEAD

Az első dolog, hogy majd visszaállítás - mozog, hogy amint azt a HEAD. Jegyezzük meg, hogy nem maga a változás HEAD (mi történik, ha a pénztár parancs); vissza mozog az ág mutatott HEAD. Így, ha a HEAD pontot ág master (azaz, ha dolgozik a mester ág), a végrehajtás git visszaállítás 9e5e6a4 csapat gondoskodik arról, hogy a mester jelzi 9e5e6a4.

Git - reset közzététele titkok

Nem számít, melyik lehetőséget hívott reset parancsot a véglegesítés (újraindítás is lehet nevezni a pálya), akkor mindig megpróbál, hogy először a mozgásban. Amikor hívja a reset --soft ezen a parancsot, és megáll.

Most megnézzük a táblázatot, és próbálja megérteni, mi történt: az utolsó parancs git commit ténylegesen törölték. Amikor futtatja git commit. Git létrehoz egy új entitás, és áthelyezi egy ága, rámutatott a HEAD. Ha alaphelyzetbe a HEAD

(HEAD szülő), mozgatja az ág, ahol korábban volt, megváltoztatása nélkül index vagy dolgozik könyvtárban. Tudod frissíteni a mutató és futás git commit újra. ezáltal hasonló, ami a parancs git commit --amend (lásd módosítása az utolsó commit).

2. lépés: Az index frissítése (--mixed)

Vegye figyelembe, hogy ha volt, hogy futtatni a git állapotát. látni fogja a zöld színnel jelölt közötti változást Index és az új HEAD.

A következő dolog fog állítani. Index frissíti a tartalmát a pillanatfelvétel által mutatott HEAD.

Git - reset közzététele titkok

Ha megadott opció --mixed. újraindítás végrehajtása leáll ebben a lépésben. Ezt a viselkedést is az alapértelmezett, tehát ha nem adsz meg semmilyen lehetőséget egyáltalán (ebben az esetben, git visszaállítás HEAD

) A parancs is megáll ebben a lépésben.

Ismét megnézzük a táblázatot, és próbálja megérteni, mi történt: nem csak a lemondás az utolsó elkövetni. hanem hozzátéve, hogy az index az összes fájlt. Azt állítja vissza, amíg a parancs végrehajtását git hozzá és git commit.

3. lépés: frissíteni a könyvtár (--hard)

A harmadik dolog, hogy majd visszaállítás - az, hogy a munka könyvtárba ugyanahhoz a fajhoz, mint az index. Ha a --hard. akkor a parancs továbbra is ezt a lépést.

Git - reset közzététele titkok

Lássuk, mi történik ma. Törölte az utolsó követ el, az eredményeket a parancs git hozzá és git commit. valamint az összes változást, amit tettek a munkakönyvtárban.

Fontos megjegyezni, hogy az egyetlen jele ez a zászló (--hard) nak vissza veszélyes csapat, az egyik a néhány esetben, amikor Git ténylegesen törli az adatokat. Minden más hívás visszaállítása könnyen visszavonni, de ha meg beállításokat --hard parancs erőszakkal felülírja a fájlokat a munka könyvtárba. Ebben a konkrét esetben a v3 változata a fájl még mindig az elkövetni a Git adatbázisban, és tudjuk, hogy neki vissza, akik a mi reflog. de ha nem követ el ezt a verziót, Git felülírja a fájlt, és lehetetlen lesz visszaállítani.

A reset parancs, meghatározott sorrendben három átírja a Git fa, megállás, amikor azt mondja, hogy:

Mozog az ág, mint azt a HEAD (megáll itt, ha rendelkezésre áll --soft nem kötelező)

Teszi ugyanazt az indexet, mint a fej (megáll ott, hacsak --hard opció meg van adva)

Lehetővé teszi, hogy a munka könyvtár ugyanaz, mint az index.

Visszaállítása az utat

A fő formája a reset parancsot (opciók nélkül és --soft --hard) akkor is át az utat, amellyel fog működni. Ebben az esetben a reset átugorja az első lépés, a többi csak akkor fog működni a megadott fájlt vagy fájlok. Az első lépés kimarad, mivel a HEAD mutatót, és nem hivatkozhat részben egy elkövetni, részben a másik. De Index és az aktuális könyvtárat lehet változtatni részben olyan visszaállítási lépéseket hajt végre a 2. és 3..

Tehát mondjuk futtatja git visszaállítás file.txt. Ez a fajta írás (mert nem adja meg sem a elkövetni SHA-1, vagy fióktelep vagy --soft opciókat vagy --hard) rövidítés git alaphelyzetbe --mixed HEAD file.txt. hogy:

Ez mozgatja az ág, mint azt a HEAD (kimarad)

Teszi az index valamint HEAD (megáll itt)

Ez azt jelenti, sőt, másolatot a fájl file.txt tetőtől az Index.

Git - reset közzététele titkok

Ez megteremti a hatása, hogy megszűnt a indexálás fájlt. Ha megnézzük a táblázatot a parancsok és utasító git hozzá. látni fogja, hogy az intézkedések szöges ellentétben.

Git - reset közzététele titkok

Ezért a kimeneti git status szerzők arra használja ezt a parancsot, hogy megszünteti az indexelő fájlt. (A részleteket lásd a törlését képzési fájlt.)

Azt könnyen lehet, hogy a Git „nem vette az adatokat HEAD”, jelezve, hogy kötelezzék el, amely, hogy a fájl verzióját. Ahhoz, hogy ezt elérjük, a következőket kell tennie: git alaphelyzetbe eb43bf file.txt.

Git - reset közzététele titkok

Feltételezhetjük, hogy valójában mi az üzemi könyvtárban vissza a fájl tartalmát változat v1. teljesült neki git add. majd visszatért a tartalmát változat v3 (sőt, mindezen lépéseket végezzük). Most, ha futunk git commit. A módosítás mentésre kerül, amely visszaküldi a fájlt a változat v1. de a fájl a könyvtárban dolgozó soha nem jön vissza erre a verzióra.

Figyeljük meg, hogy a parancs git add. Reset megadható --patch lehetőség, hogy megszünteti a tartalmának indexelése. Ily módon, akkor szelektíven törölni indexelési vagy visszavonhatja a módosításokat.

Merge véglegesítésekhez

Lássuk, hogyan kell használni a fentivel, a dal - egyesítés követ.

Tegyük fel, hogy van egy elkövetni szekvencia a következő üzenettel: „hoppá.”, „A” és „elfelejtettem a fájlt.” Használhatja a reset ahhoz, hogy gyorsan és könnyen egyesíteni őket egy. (Az Egyesület rögzítése egy másik módja annak, hogy nem ugyanaz a dolog, de ebben a példában, könnyebb használni állítani.)

Tegyük fel, hogy van egy projekt, amelyben az első elkövetni tartalmaz egy fájlt, a második követ el hozzáadja az új fájlt, és megváltoztatja az első és harmadik elkövetni újra megváltoztatja az első fájlt. A második commit-ben készült munkája során, és azt szeretnénk, hogy beolvad a következő.

Git - reset közzététele titkok

Akkor végre egy git alaphelyzetbe --soft HEAD

2. HEAD ág, hogy visszatérjen az előző néhány elkövetni (az első követ el, amely szeretné elhagyni):

Git - reset közzététele titkok

Ezután egyszerűen futtassa újra a git commit:

Git - reset közzététele titkok

Most már láthatja, hogy a „hozzáférhető” történet (a történet, hogy majd elküldi a szerver), most úgy néz ki - már az első vállalják, hogy a file-a.txt változat v1. és a második, amely megváltoztatja a fájl a.txt fájl verzióját v3 és hozzáteszi fájl b.txt. Commit, amely tartalmazta v2 verziója a fájl nem maradt a történelem.

Összehasonlítás a pénztár

Végül, akkor vajon mi a különbség a pénztárnál és visszaállítás. Ahogy állítani. Fizetéskor parancs működik három fa Git, valamint annak viselkedése függ attól, hogy megadta a fájl elérési útvonalát, vagy sem.

elérési út nélkül

A parancs git pénztár [ág] nagyon hasonlít a git visszaállítás --hard [ág]. a folyamat elvégzése mindhárom fák változott néz ki, mint egy [ág]. De van két fontos különbség a két csapat.

Először is, ellentétben alaphelyzetbe --hard. Fizetéskor csapat gondoskodik a munka könyvtár, és ellenőrizze, hogy az ne érjen hozzá a fájlokat, hogy megváltoztak. Tény, hogy ez a csapat megy egy kicsit okosabb - megpróbál rajta egy működő könyvtár egyszerű egyesülést, hogy az összes olyan fájlt, amely nem változtak, frissítve lett. Másrészt, reset --hard csapat csak cserélni az egész dolog, hogy nem végzünk vizsgálatokat.

A másik lényeges különbség, hogy ezek a parancsok frissíti a HEAD. Míg a reset ág mozog, amint azt a fej, fej checkout parancsot mozog magát, úgy, hogy rámutat arra, hogy egy másik ága.

Tegyük fel például, hogy van egy mester ágat, és fejleszteni. amely jelzi a különböző elkövetni, és mi most fejleszteni ág (azaz a fej felé kell). Ha futunk git visszaállítása mester. ő fog dolgozni egy ágat, hogy mindig ugyanarra elkövetni, mint a mester. Ha futunk git checkout mester. hogy dolgozzon nem változik, de a változás HEAD. Ő fog mutatni a mester.

Így mindkét esetben haladunk a HEAD vállalják, hogy az A, de a legfontosabb különbség, hogy hogyan csináljuk. A reset parancs mozog is egy ágat, mutatott a fejére, és aki csak a pénztárnál HEAD.

Git - reset közzététele titkok

Mutatja az utat

Egy másik módja, hogy végre a pénztárnál, hogy meghatározza az elérési utat. Ebben az esetben, mivel a reset parancsot. Feje nem mozdult. Ez a parancs, mint a git vissza [ág] file frissíti a fájl verzióját az index egy elkövetni, de ráadásul frissíti és fájlt a munka könyvtárba. Ugyanez lett volna a csapat git alaphelyzetbe --hard [ág] fájlt (ha alaphelyzetbe lehet futtatni úgy) - ez nem biztonságos a munkavégzés könyvtárba, és mozgatja a fejet.

Csakúgy, mint a git reset és git hozzá. Fizetéskor parancsnak --patch lehetőséget annak érdekében, hogy lehetővé teszi, hogy szelektíven visszaállíthatja változtatni a fájl tartalmát.

következtetés

Remélem, megérti a reset parancsot, és akkor is biztonságosan használható. De talán még egy kicsit zavaros, hogy pontosan mit is eltér a pénztárnál. vagy megjegyezni az összes használt szabályok különböző kiviteli hívni.

Kapcsolódó cikkek