Jak skopiować tylko niektóre commity z feature brancha do mastera? – polecenie git cherry-pick

Czy zdarzyła Ci się kiedyś taka sytuacja, że siedzisz sobie spokojnie w biurze, poprawiasz różne bugi w projekcie, dodajesz nowe funkcjonalności. Nagle, wchodzi Twój Szef / kierownik / project manager / ktoś inny (niepotrzebne skreślić 🙂 ) i mówi, że zaraz wydajemy wersję i chcemy w niej mieć poprawione bugi X, Y, Z oraz ten feature A.

Okazuje się, że masz to zrobione, ale znajduje się to na Twoim branchu wraz z innymi rzeczami, których jeszcze nie skończyłeś. Co robić? No otwierasz IDE i kopiujesz niezbędny kod na brancha produkcyjnego (develop lub master) i już 🙂 Skopiowanie jest w miarę szybkie, ale jeszcze musisz sprawdzić czy na pewno wszystko skopiowałeś, czy coś nie zostało.
Zajmuje Ci to ok. 30 minut. Wszystko działa, wersja może zostać wystawiona.

Jednak da się to zrobić w sposób szybszy i dużo łatwiejszy. Jak? Polecenie git cherry-pick nam pomoże.

(więcej…)

Porównanie commitów między branchami – git show-branch

Jeśli pracujecie z kilkoma branchami, można czasami się trochę pogubić. Gdzie to skomitowaliśmy? Czy zrobiliśmy merge’a na odpowiedni branch? Aby porównać dwa branche można skorzystać z jakiejś aplikacji z GUI do obsługi gita np. SourceTree. Aplikacja ładnie wizualizuje nasze branche, jednak albo pokazuje jeden, albo wszystkie. Co zrobić jak chcemy porównać commity między dwoma konkretnymi branchami? Z pomocą przychodzi Nam polecenie git show-branch. (więcej…)

Bezpieczne (prawie zawsze) nadpisywanie zmian – git push –force-with-lease

Ostatnio w pracy miałem sytuację, że w commit message wpisałem zły numer taska z Azure DevOps (dawne Visual Studio Team Services). Przez to mój commit został połączony z nieprawidłowym zadaniem. Wiedziałem, że wszystko da się odkręcić przepinając w portalu na inny task. Jednak nie chciałem zostawić tego commit message ze złym numerem taska. Zauważyłem to od razu, więc również szybko zacząłem szukać czy mogę to poprawić na branchu zdalnym.

Zdawałem sobie sprawę, że mogę użyć git push --force i to na pewno zadziała, ale dodatkowo chciałem być pewien, że nic nie zepsuję. Wtedy przypomniało mi się, że w PDFie od Macieja Aniserowicza “10 Sekretnych Komend Gita, O Których Nie Masz Pojęcia” było chyba coś takiego opisanego. (więcej…)

Rebase podczas synchronizacji repozytorium – polecenie git pull –rebase

Wszystkie zmiany w kodzie, które robimy lokalnie w jakimś momencie musimy wrzucić do zdalnego repozytorium. Git nie pozwoli Nam wrzucić swoich zmian, jeśli nie mamy zsynchronizowanego repozytorium. Przed wrzuceniem naszej pracy musimy ściągnąć ostatnie commity wrzucone przez innych. Do ściągnięcia najnowszej wersji repozytorium służy polecenie git pull – o tym na pewno wszyscy wiedzą.

Jednak jak ono naprawdę działa? (więcej…)