Elhibázott verzió kezelés

Elhibázott verzió kezelés
2021-11-06T14:23:25+01:00
2021-11-07T00:11:13+01:00
2022-10-15T21:21:07+02:00
Ezekiel777
Sziasztok!

Kezdő vagyok GIT-ben és akadt egy kis baleset, amit nem tudok helyre hozni. Ebben kérném hozzáértők szíves segítségét. Van Githubon egy nagyon aprócska projekt, ahol van egy repositoty mondjuk "A" meg "B" ágakkal. Ritkán dolgozunk rajta, mondjuk általában heti szinten. Na most az a helyzet, hogy múlt héten az "A" ágban dolgoztam. Mikor most dolgozni kezdtem, akkor a "B" ágban kellett dolgoznom,de nem toltam git checkout B-t, vagyis a fájl amit totálisan felülírtam, az "A" ághoz tartozó. Figyelmetlen voltam és git add és git commit is bekövetkezett mire ráeszméltem, hogy én másik ágat módosítok. Nem akartam ezt feltölteni a távoli repóba, szóval váltani akartam "B" ágra,de azt nem hagyta. Most itt állok és nem tudom mi lenne a megoldás. Köszi előre is a segítséget!
Mutasd a teljes hozzászólást!

  • Nem akartam ezt feltölteni a távoli repóba, szóval váltani akartam "B" ágra,de azt nem hagyta.

    Amikor "nem hagyta", akkor kiírt valami hibaüzenetet is, vagy csak úgy nem hagyta?

    (Egyébként ha még nem volt git push, akkor még nem késő lokálisan rendbe tenni a dolgokat. Valószínűleg a git rebase lesz a barátod, de lehet hogy extra kapcsolók kellenek neki, vagy valami bonyolultabb repó manipuláció.)
    Mutasd a teljes hozzászólást!
  • Szia! Kiírta, hogy rejceted. Szóval volt hibaüzenet. Sajnos most a  pontosra már nem emlékszem. Bolond módon nem írtam fel :( A probléma googlizása során nekem is a látóterembe került az általad említett git rebase,de nem állt össze a kép, hogy hogyan kellene használni pontosan
    Mutasd a teljes hozzászólást!
  • Kiírta, hogy rejceted

    Hát ez így kevés lesz. Szerintem próbáld meg újra, és másold be a pontos hibaüzenetet. Enélkül nehéz lesz segíteni.

    látóterembe került az általad említett git rebase,de nem állt össze a kép, hogy hogyan kellene használni pontosan

    Az elv annyi, hogy vesz valahány commitot, és egy másik branchre "rápörgeti" (átvezeti a változásokat, amit a commitok tartalmaznak). A pontos paraméterezésben segít a man oldal, ami a git-scm.com-on online is elérhető.
    Mutasd a teljes hozzászólást!
  • Ha még nem ment fel a szerverre, akkor minden okés, az itt írtak szerint lehet eljárni: 1597: Git - explain xkcd
    Mutasd a teljes hozzászólást!
  • Ha jól értem, akkor így nézünk ki, és nincs se a working directory-ban, se az indexben commit-álandó változás:

    [A] Hibás commit (lokálban) (111112) | [origin/A] Ekkor még jó volt (ez van a remote repóban) (111111) [B, origin/B] | | | |/------------/ | [master, origin/master]
    1) Soft-reset az előző commitra. Így a working directory és az index nem változik (a munkád nem vész el, de újra kell majd commit-olni), de a lokál branch visszakerül egy szintre az origin/A-ra
    git reset --soft 111111

    [A, origin/A] Ekkor még jó volt (ez van a remote repóban) (111111) [B, origin/B] | | | |/------------/ | [master, origin/master]

    2) Álljunk át a B branch-re. Itt lehetnek merge conflict-ok, ha az A és a B branch eltér, ezt fel kell majd oldanod.
    git checkout B

    3) Commit-oljunk:
    git commit -m "Most már jó helyen van"

    [B] Most már jó helyen van | [A, origin/A] Ekkor még jó volt (ez van a remote repóban) (111111) [origin/B] | | | |/------------/ | [master, origin/master]

    4) Végül toljuk fel a szerverre a változásokat:
    git push

    [B, origin/B] Most már jó helyen van | [A, origin/A] Ekkor még jó volt (ez van a remote repóban) (111111) | | | | |/------------/ | [master, origin/master]
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd