GIT visszatérés egy korábbi commit-hoz? (bővebben lent)
Most ismerkedem a GIT-tel és a következő feladványba ütköztem. Az master-ben az utolsó commit hibás kódokat tartalmaz emiatt vissza szeretnék térni az eggyel korábbihoz. Ezt sikerült megcsinálom a git reset paranccsal.
Ezután folytattam a programom írását, megoldottam a problémát és csináltam egy új commit-ot.
Igenám, de a git push parancs nem működik mivel a github-on nem törlődött a hibás commit és emiatt a már kijavított kódomat nem tudom feltölteni mivel a következő hibaüzenetet kapom:
"! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ' [link]
hint: Updates were rejected because the tip of your current branch is behind"
A hibaüzenetet és az okát pontosan értem. A kérdés arra vonatkozik, hogy egy ilyen esetben hogyan kellene eljárnom ahhoz, hogy egy korábbi commit-on tudjam folytatni a munkát?
Jól értem, vissza akarod állítani a branchet egy korábbi kommitra, mintha az utána következők meg sem történtek volna?
git reset --hard {korábbi kommit hash}
git push -f
Igen, ezt kerestem köszönöm.
Egy ilyen verziókövető alkalmazásnál hogy kezelik a hasonló problémákat? Vagyis ha rossz irányba ment el a fejlesztés és vissza akarnak térni egy korábbi commit-hoz. Nem tudom biztosan de van egy olyan érzésem, hogy amit csináltam az valószínűleg nem épp optimális.
Letezik tobb fele branching strategy, legegyszerubb neked a feature branching. A master az a live/release verzio, soha ne commitolj oda.
git pull hogy meglegyen az origin/master
Git checkout-b feature-valami
Ha kesz vagy git commit am "valami"
git push origin feature-valami
Gitlab/hub oldalan csinalsz egy merge requestet hogy hozzaadd a materhez (lehet hogy lesz merge conflict)
ha sikerult akkor a gepeden git pull origin master hogy updateld a te local masteredet
Köszi a válaszokat. Ez egy abszolút tanuló project, annyi célja van, hogy kicsit ismerkedjek a HTML, JS, CSS, GIT fejlesztéssel. Annyi specifikációm van, hogy működjön a dolog és mivel rájöttem, hogy az előző commit-ban hülyeségeket csináltam egyszerűbbnek tűnt visszaállítani.
Értem, hogy a master-be csak olyat kell commit-olni ami le van tesztelve tudjuk, hogy működik, de valójában ugyanez a helyzet előfordulhat egy branch-ben is, vagyis ott csinálok valami hülyeséget és ott kellene visszamenni egy commit-ot.
git reset --soft HEAD~1
A working directoryban megmaradnak a fajlok, ha nem kellenek akkor -- hard
Ha master-ben esetleg valamely feature-ről kiderül, hogy nem szükséges, akkor azt egy külön commit keretében eltávolítjuk (ez a ticket-ing miatt is fontos) ritkán van olyan, hogy egy adott commit-ra szeretnénk visszatérni. (megfelelő tervezés esetén nem nagyon vesz rossz irányt a fejlesztés)
Én arra is eléggé figyelek, hogy feature-branch-be se menjen rossz kód, azaz, csak akkor frissítem az origin-t (push), ha tuti jó. Ha mégis van valami gond remote-tal, akkor vagy törlöm a branch-et, vagy egy új commit-tal kijavítom. Ennek részben az az oka, hogy sokat commit-elek, és ezért nehéz lenne kitalálni, hogy pontosan melyik commit-re akarok visszatérni.
Köszönöm a részletes leírást! Teljesen új nekem a GIT, úgyhogy nem tudom, hogy a "ziparban" milyen folyamatokat alakítanak ki hozzá. Nagyon sokat dolgoztam SVN-ben, de mivel általában egyszemélyes hadsereg voltam ezért nem kellett abban gondolkodnom, hogy mi az ami sok fejlesztő esetén is működőképes.
Sokat segítettek a válaszok!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!