Kezdőoldal » Számítástechnika » Programozás » GIT visszatérés egy korábbi...

GIT visszatérés egy korábbi commit-hoz? (bővebben lent)

Figyelt kérdés

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?


2020. aug. 1. 16:33
1 2
 1/11 anonim ***** válasza:
70%

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

2020. aug. 1. 21:43
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:

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.

2020. aug. 1. 22:27
 3/11 anonim ***** válasza:

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

2020. aug. 2. 09:30
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:
Persze mielott mergeled, manual es unit teszelsz, hogy ne kerulhessen hiba a mastebe. Nem tudom mit ertessz "rossz irányba ment el a fejlesztés" alatt, valami specifikacionak vagy designnak kell lennie ami alapjan fejlesztessz
2020. aug. 2. 09:40
Hasznos számodra ez a válasz?
 5/11 A kérdező kommentje:

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.

2020. aug. 2. 13:43
 6/11 anonim ***** válasza:
57%

git reset --soft HEAD~1

A working directoryban megmaradnak a fajlok, ha nem kellenek akkor -- hard

2020. aug. 2. 17:25
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:

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.

2020. aug. 3. 00:53
Hasznos számodra ez a válasz?
 8/11 A kérdező kommentje:
Köszönöm.
2020. aug. 3. 07:35
 9/11 anonim ***** válasza:
100%
Egy feature az egy "nagyobb dolog" pl: user accounts amibe tartozik mondjuk registration, login, my account es password change. Csinalsz egy feature-user-accounts branchet, ebbol csinalsz egy development branchet ami user-accounts-login, ha kesz vagy mergeled a featurebe, naluk ilyenkor van a code review, kozvetlen senki nem mergelhet featurbe, minimum 2 embernek kell engedelyezni, szoval a featurebe sem kerulhet nagyon hiba, ha kesz a feature akkor masterbe mergeleskor a feature branch automatikusan torlodik, szoval nem is tudnal visszzamenni(vagyis igen de a feature mar csak a te local repodban van, remoteban torolodott), ha kesz a login akkor featurebol megint egy dev branch, user-accounts-registration. Igy minimalizalod az eselyet hogy rossz kod keruljon a featurebe. Ha megis hiba kerul a masterbe, akkor ahogy a 7-es irja, kell egy ticket (minden featurenek van) ilyenkor csinalsz egy bugfix-valami branchet es azt commitolod
2020. aug. 3. 08:47
Hasznos számodra ez a válasz?
 10/11 A kérdező kommentje:

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!

2020. aug. 3. 13:31
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!