Git checkout hash, po co to używać?

Odpowiedz Nowy wątek
2019-04-28 22:36
0

Z waszego doświadczenia: po co używać polecenia git checkout hash_danego_commita? Czy jest to często używane? I czemu to służy?
Nie za bardzo rozumiem idei, bo ok po wpisaniu tego polecenia cofa Cię danego commita. Ale czy po cofnięciu jak jesteś w trybie "odłączonej głowy" jedyne co możesz zrobić to utworzyć nową gałąź zeby zapisać zmiany? Czy to stosuje się do zwykłego cofnięcia się po commitach (tak jak np. git reset ~1)? Czy da się to zrobić bez tworzenia nowej gałęzi (git checkout -b branch)?

Pozostało 580 znaków

2019-04-28 22:43
1

po co używać polecenia git checkout hash_danego_commita?

Aby cofnąć się do stanu repozytorium zgodnego z danym commitem :-)

Czy jest to często używane?

Statystyk raczej nikt nie prowadzi, więc ciężko powiedzieć konkretniej.

I czemu to służy?

Znajomy w pracy przykładowo sprawdza w taki sposób merge requesty na swoim komputerze - nie musi przez to tworzyć lokalnych branczy, które za moment i tak by usunął.

Czy to stosuje się do zwykłego cofnięcia się po commitach (tak jak np. git reset ~1)?

  • revert tworzy nowy commit, który możesz wypchnąć do zewnętrznego repozytorium,
  • reset przesuwa głowę aktualnej gałęzi na dowolny inny commit (co również jest informacją, którą możesz wypchnąć do zewnętrznego repozytorium - przeważnie jednak tylko przez push --force),
  • checkout umożliwia podgląd stanu repozytorium na danym commicie, lecz nie wprowadza żadnych zmian w samej strukturze repozytorium czy commitach (nie licząc reflogów AFAIK).

Czy da się to zrobić bez tworzenia nowej gałęzi (git checkout -b branch)?

Czym jest to?


edytowany 8x, ostatnio: Patryk27, 2019-04-29 08:09

Pozostało 580 znaków

2019-04-28 22:57
0

Znajomy w pracy przykładowo sprawdza w taki sposób merge requesty na swoim komputerze - nie musi przez to tworzyć lokalnych branczy, które za moment i tak by usunął.
Mógłbyś trochę więcej napisać w jaki sposób wykorzystać to polecenie do testów merge requestów?
Z tego co napisałeś, wnioskuję, że polecenie bardziej służy do testów, jak przy danym commicie wyglada repozytorium

Pozostało 580 znaków

2019-04-28 23:12
0

Robisz git checkout hash-commita i sprawdzasz czy aplikacja działa tak, jak powinna ;-)


Albo szukasz, po którym przestała ;p - somedev 2019-04-29 10:29
W takim wypadku raczej git bisect :-) - Patryk27 2019-04-29 10:31

Pozostało 580 znaków

2019-04-29 09:40
0

Mi się zdarzyło to użyć jeszcze w przypadku, gdy chciałem usunąć kilka nienastępujących po sobie commitów, które ktoś wprowadził do gałęzi, a coś psuły.

checkoutem usuwałeś commity? - Patryk27 2019-04-29 10:18
No nie wprost. Checkoutem musiałem się cofnąć do ostatniego, dobrego commita, stworzyć z niego nową gałąź, zrobić cherry-pick tych właściwych commitów ze "złej" gałęzi i dopiero wtedy się zresetować na "złej" gałęzi i zmergować poprawki. Taki rebase, tylko wybiórczy. - sabat24 2019-04-29 11:12
... czyli taki najzwyklejszy interaktywny rebase? :-P - Patryk27 2019-04-29 11:13
Tak, ale wygodniej mi było zrobić akurat przez cherry-picka jeden commit po drugim dla dodatkowego sprawdzenia. Stąd napisałem, że mi się raz zdarzyło użyć, ale jednak :) - sabat24 2019-04-29 11:21

Pozostało 580 znaków

2019-04-29 13:26
0

Możesz tak też robić fiksy na stare commity (aczkolwiek tutaj łatwiej skakać do taga niż bezpośrednio do hasha). Innym przykładem, który używam (ale nie bezpośrednio) jest odpalanie testów na wszystkich commitach "po drodze" by zobaczyć czy wszystkie commity się budują (przydatne w przypadku ewentualnego bisect w przyszłości). Do tego używam git-test od Spotify.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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