Lekcja w wersji wideo

Synchronizujemy repozytoria – operacja Push

Mamy już zewnętrzne repozytorium oraz podpięliśmy je do naszego lokalnego.

W końcu przyszedł czas na wypchnięcie wszystkich zmian! Do takich działań służy opcja Push. W korporacyjnym świecie spotkasz się często ze zwrotami takimi jak Zpuszowałem zmiany czy Zrobiłeś pusza? i właśnie te zwroty odnoszą się do wspomnianej akcji Push.

Co wchodzi w skład Push

A co tak naprawdę chcemy wypchnąć? I to jest bardzo dobre pytanie! Na obecną chwilę mamy bardzo prosty projekt, więc u nas wystarczy zrobić Push wszystkich commitów. Tym samym to co wylądowało w naszym lokalnym repozytorium zostanie przeniesione do zewnętrznego.

TIP: Repozytorium bogate w różne inne elementy, które oferuje Git (branche, tagi etc.) musi być trochę inaczej zsynchronizowane. Będziemy te elementy z biegiem czasu dodawać i synchronizować.

Wracamy ponownie do niezwykle istotnego tematu – z czego składa się nasz projekt? Commitami dodaliśmy wszystkie pliki i zmiany, aby utworzyć wersję naszego projektu. Jednak jest to tylko lokalna reprezentacja projektu. Teraz przyjdzie czas na decyzję o tym co umieścić na zdalnym repozytorium.

My zrobimy to najprostszą i generalnie najpopularniejszą drogą – wypychając wszystkie commity.

Robimy Push

Opcja push jest dostępna przez główne, górne menu, czyli nie tak łatwo jak w przypadku commit, który możemy wykonać z wielu miejscach. Jest to prawdopodobnie spowodowane tym, że zazwyczaj push jest wykonywany wraz z commitem (przećwiczymy to niedługo).

Przejdź więc w głównym menu:
VCS -> Git -> Push

Opis okna Push Commits

Powinno nam się pokazać okno Push Commits

Opiszmy sobie co w nim znajdziemy. Na początek skupmy się na opisie wiersza w lewej części okna master -> origin:master New:

  1. Pierwsza nazwa od lewej: master oznacza to, że wypychamy zmiany z tego brancha (przypomnijmy: gałęzi) czyli z mastera (potoczna nazwa brancha master)
  2. Następnie po lewej stronie strzałki znajduje się nazwa origin oznaczająca, że z naszej lokalnej gałęzi master wypychamy zmiany na zewnętrzne repozytorium, którego adres został powiązany właśnie z nazwą origin.
  3. Kolejną składową jest znowu nazwa master. Tym razem chodzi o brancha na zdalnym repozytorium na którego wypchniemy zmiany.
  4. Pozostał jeszcze opis New. Oznacza on, że zdalne repozytorium nie posiada jeszcze takiego brancha i zostanie on automatycznie dodany

Z prawej strony okna możemy zobaczyć co zostanie wypchnięte wraz z akcją push. Zauważ, że nazwy plików mają ponownie kolor zielony. W tym przypadku mamy do czynienia z plikami, które jeszcze nigdy nie znalazły się na zewnętrznym repozytorium. Czyli zasada jest ta sama jak przy commitach:

Gdy dodajemy nowe pliki przed akceptacją jako commit mają one barwy sygnalizujące ich zmiany. W przypadku push pokazane są różnice względem lokalnego i zdalnego repozytorium.

Czyli powtórzmy: Możemy porównywać zmiany, które robimy z lokalnym repozytorium, ale także widzimy tu porównanie zmian względem lokalnego i zdalnego repozytorium. To już jest odrobinę skomplikowane, ale utrwalimy to sobie praktyką!

Mamy nawet znajomą ikonkę niebieskich strzałek skierowanych w przeciwne strony czyli diff, którą możemy sprawdzić jakie zmiany wprowadzimy. Domyślnie jest wybrany pierwszy plik z listy znajdującej się w prawej części okna. Po kliknięciu diff zobaczymy niezbyt imponujące porównanie, gdyż wszystkie zmiany są nowe względem zdalnego repozytorium.

Wróćmy do prawej części opisywanego okna. Widzimy tam nazwy naszych commitów. Gdy taką nazwę klikniemy z lewej strony zobaczymy znany nam z panelu Version Control i zakładki Log podgląd zmian dla poszczególnych commitów. Kolory tutaj będą odnosiły się już do zmian pomiędzy commitami.

Przytrzymanie kursora na nazwie danego commita spowoduje wyświetlenie dokładniejszych danych tego commita. Możemy nawet użyć skrótu Ctrl + Q aby podglądnąć te informacje w nowym oknie.

Klikamy Push

Po zapoznaniu się z tym oknem możemy wykonać upragnioną akcję Push! Klikamy przycisk na dole okna i… Po chwili powinno pojawić się powiadomienie w prawym dolnym rogu:

Pięknie – nasze commity z mastera wylądowały na masterze na zdalnym repo (tak często określa się zdalne repozytorium w żargonie korporacyjnym).

Wrzuciliśmy zmiany na repo – piątka!

2 komentarze

  1. Hej proszę o poradę. Coś tutaj u mnie dzieje się nie tak. Jak tworzę zdalne repozytorium, łącze je z lokalnym, później pushuję dany projekt to docelowo na githubie do nowego repozytorium dodatkowo pokazują mi się jakieś stare foldery, Z czym to może być związane?

    Avatar Edyta Maj
    1. Hej Edyta👋
      Taka sytuacja może mieć miejsce, gdy na jakimś etapie utworzyłaś repozytoria, które wzajemnie się na siebie nakładają. Wtedy push zawiera więcej elementów niż się spodziewamy, gdyż tak naprawdę pushujemy inne repozytorium.
      Drugą opcją może być problem z usuwaniem. PyCharm automatycznie dodaje zmiany i nie trudno je lokalnie zacommitować. Najgorzej jest z plikami pomocniczymi, których nie chcemy pushować na zewnątrz. W takim przypadku trzeba je usunąć (albo tymczasowo przenieść po za repozytorium), zacommitować zmiany a następnie przenieść je z powrotem do repozytorium.
      Idealnie jest je dodać do pliku .gitignore Niestety w obecnych materiałach do tego kursu jeszcze nie ograłem tematu gdyż mamy go w innych naszych programach.
      To wszystkie pomysły jakie mam. Jeśli to nie rozwiązuje problemu proszę opisz szczegółowo kroki przy których obserwujesz zachowanie czy wrzuć zrzuty ekranu.
      Jeśli nie są to rzeczy publiczne – po prostu napisz do nas maila.
      Pozdrawiam i życzę mega produktywnej nauki 💪

      Przemek Barański Przemek Barański

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *