Git - powrócenie do wybranegocommita i push

0

Witam serdecznie,

na serwerze GitLab'a, na głównym drzewie "master" mam 4 "commit'y", chcę powrócić lokalnie do "commit'a" 2, wykonać sobie kilka zmian, i zrobić nowego "commit'a" numer 5, następnie "git push -u origin master".

Jak to zrobić ?

Z góry dzięki za informacje.

3

Jeżeli chcesz się cofnąć do commita na chwilę to:
git checkout tutaj_numer_commita
ten numer dostaniesz jak zrobisz git log - ewentualnie polecam: https://coderwall.com/p/euwpig/a-better-git-log - ja mam faze na kolorowe literki w konsoli.

Jeżeli chcesz np: cofnąć się do commita,zostać tam i wypushować te zmiany na serwer.

git reset --hard number_commita
git push origin nazwa_brancha --force

mówisz gitowi żeby olał to co jest na remote'cie i zastąpił to Twoimi lokalnymi zmianami.

A jeżeli chcesz się cofnąć 4 commity wstecz, zrobić tam jakieś zmiany i zrobić commit - to, to jest głupie i powątpiewam że takie coś jest możliwe.

0
niezdecydowany napisał(a):

Jeżeli chcesz się cofnąć do commita na chwilę to:
git checkout tutaj_numer_commita
ten numer dostaniesz jak zrobisz git log - ewentualnie polecam: https://coderwall.com/p/euwpig/a-better-git-log - ja mam faze na kolorowe literki w konsoli.

Jeżeli chcesz np: cofnąć się do commita,zostać tam i wypushować te zmiany na serwer.

git reset --hard number_commita
git push origin nazwa_brancha --force

mówisz gitowi żeby olał to co jest na remote'cie i zastąpił to Twoimi lokalnymi zmianami.

A jeżeli chcesz się cofnąć 4 commity wstecz, zrobić tam jakieś zmiany i zrobić commit - to, to jest głupie i powątpiewam że takie coś jest możliwe.

Ok, w takim układzie możliwe jest cofnięcie wyłącznie o jednego commita, dodanie zmiany, nowy commit i push ?

Nie mogę cofnąć się o 2 commity, zrobić nowe zmiany, nowego comita i push ?

0

Ale czemu nie możesz dodać zmian na samej górze drzewa tylko musisz się cofać - bez sensu ? Czy ty chcesz USUNĄĆ COMMIT ?

0
niezdecydowany napisał(a):

Ale czemu nie możesz dodać zmian na samej górze drzewa tylko musisz się cofać - bez sensu ? Czy ty chcesz USUNĄĆ COMMIT ?

Już mówię, zacommitowałem 2 razy na zdalne repo, i okazało się. że commitowałem z czymś co nie działa, mało tego usuwałem pliki z repo, które były odpowiedzialne za funkcjonowanie jednego, ale wykluczały drugie.

Muszę się cofnąć 2 commity - i z tego stanu, jeszcze raz wprowadzić zmiany ;) - następnie chce to skommitować na nowo, i push na repo zdalne.

2

Widzę, że ktoś tu jest dowcipny
user image

0

@DuoActive no to teraz wyobraź sobie jak to będzie wyglądalo w logu commitów a następnie wyboraź sobie WTFy kolegów którzy tego loga zobaczą. Nie kombinuj tylko zwyczajnie pociągni head, napraw coś napsuł i pushuj...

2

najpierw znajdujesz hash uzywajac:
git log

jak na lokalnym repo to usuwasz tak:
git rebase -i hash_commita^

jak na zdalnym repo:
git revert hash_commita

jesli kazali Ci zrobic rebase na zdalnym to wtedy git push -f, ale jak tutaj cos zle zrobisz to zepsujesz zdalne repo, na serwerze lepiej miec ciaglosc historii i miec historie o tym ze Ci sie nie udalo i potem to naprawiasz

na lokalnym zupelnie usuniesz commita i zmienisz hashe wszystkich po nim, na zdalnym takich rzeczy sie nie robi i zamiast tego wysylasz odwroconego commita tego co zepsules.

0

Dzięki za wyjaśnienie,

W takim układzie naprawiam z palca to co zepsułem, przywracając checkout'em konkretne pliki - następnie nowy commiti i push.

1 użytkowników online, w tym zalogowanych: 0, gości: 1