System Kontroli Wersji
8 godz. 23 min · Git · Full-stack i Programowanie
Mateusz KuleszaSenior Software Developer, Konsultant, TrenerInne systemy wersjonowania wymagają konfiguracji specjalnych serwerów - a z GIT wystarczy do tego twój komputer. GIT pozwoli Ci zapisywać kolejne wersje twojej pracy lub eksperymentować z różnymi zmianami. Jeśli chcesz tworzyć kopie zapasowe - w kursie zobaczysz jak tworzyć klony twojego projektu oraz jak wysyłać i pobierać aktualne zmiany pomiędzy klonami.Pierwsza sekcja pozwoli Ci zyskać pewność w samodzielnej pracy z GITem nim podejmiesz się pracy w zespole. Dowiesz się jak przygotować zestaw zmian, ignorować pliki tymczasowe, jak tworzyć migawki z opisami zmian, a następnie przeglądać i porównywać zmiany dokonane nawet miesiące temu. W kolejnej części kursu dowiesz się jak wycofywać zmiany, przywracać wcześniejsze wersje i edytować historię zmian. Zobaczysz, że w GIT “nic nie ginie”. Pokażę Ci jak możesz odzyskać pozornie utracone zmiany oraz jak naprawić historię zmian łącząc, dzieląc, a nawet zmieniając kolejność dokonanych wcześniej zmian.
Jesteś w trakcie pracy nad ważnym projektem, i nagle musisz oderwać się od pracy, by wykonać jedną, szybką poprawkę? W GIT możesz błyskawicznie przełączyć się na inną wersje projektu, lub po prostu “odłożyć na później” pliki nad którymi pracujesz i wrócić do nich kiedy tylko tego potrzebujesz. W tej części kursu zobaczysz jak pracować na gałęziach, dodawać etykiety oraz przełączać różne wersje plików. Dowiesz się jak porównywać oraz eksperymentować z plikami bez ryzyka utraty danych. Co najważniejsze - nauczysz się łączyć i dzielić wiele różnych wersji twojej pracy. Zobaczysz, jak praca na gałęziach nie tylko zwiększy Twoją swobodę i elastyczność w codziennej pracy, ale również jak gałęzie pozwalają wielu osobom na równoległą pracę na tych samych plikach bez martwienia się o utratę danych lub niespójne wersje.
W kursie dowiesz się nie tylko jak zapamiętywać zmiany, ale także jak je opisywać i oznaczać, tak, by nawet miesiące później móc łatwo odnaleźć odpowiednią wersję pliku, lub by dowiedzieć się kiedy, kto i dlaczego zmieniał dany plik. Zobaczysz jak dobre praktyki w opisywaniu zmian wspomagają pracę grupową. Dowiesz się jak pobrać lub wysłać zestaw zmian na serwer oraz jak połączyć zmiany swoje, lub zmiany otrzymane od współpracownika. Dodatkowo, zobaczysz jak bezpiecznie rozwiązać problem konfllktujących zmian w plikach lub jak przenieść zmiany z wersji do wersji. W kursie dowiesz się także jak w bardzo prosty sposób korzystać z pozornie najtrudniejszej funkcji GITa, jaką jest polecenie “rebase”. Zobaczysz jak usprawni się Twoja praca, gdy będziesz mógł w jednym kroku zbudować historię zmian. Jeśli źle zapisałeś zmiany, nie podoba Ci się historia zmian, lub po prostu chciałbyś łatwo uniknąć konfliktów - git rebase będzie Twoim nowym ulubionym narzędziem.
…zmieniło ten sam plik, trzeba jakoś te zmiany połączyć. Zobaczysz jak GIT pozwala wysłać zestaw zmian na serwer, pobrać zmiany innych osób i automatycznie dołączyć te zmiany w odpowiednich miejscach. Co jednak jeśli dwie osoby zmienią tę samą linię w pliku? W kursie dowiesz się nie tylko jakie są różne sposoby i strategie łączenia zmian, ale także jak dzięki historii będziesz wiedział dlaczego zmiana w pliku została wprowadzona. Dzięki narzędziu rebase będziesz mógł zaaplikować wszystkie zmiany w odpowiedniej kolejności i w odpowiednim miejscu.
W kursie poznasz także usługę GitHub. GitHub to nie tylko usługa udostępniająca repozytoria dla GIT - umożliwia również tzw. społecznościowe podejście do tworzenia… I to nie tylko kodu. Zobaczysz, że dzięki GitHub praca nad kodem aplikacji czy nową książką może odbywać się zespołowo. Pokażemy Ci jak publikować swoje zmiany oraz jak zgłaszać je innym do przejrzenia i połączenia z ich wersją. Poznasz także sposoby planowania pracy, przydzielania zadań i zarządzania postępem ich wykonania - wszystko na twoim koncie na portalu GitHub. Oprócz poleceń i funkcji GIT w tym kursie pokażemy Ci również, na prostych, praktycznych przykładach, typowe techniki i praktyki pracy z GIT. Podczas kursu symulujemy zespół budujący prostą stronę internetową. Co ważne, nie musisz znać HTML by skorzystać z tej części kursu! Zobaczysz jak wygląda praca z perspektywy jednej osoby, co zrobić gdy musisz przerwać pracę i przełączyć się na inne zadanie oraz jak przygotować Twoją pracę do podzielenia się nią z zespołem. Pokażemy kilka przykładów organizacji pracy. Zobaczysz prace z małym, centralnym repozytorium, a także modele pracy rozproszonej, z której korzystają duże projekty typu open-source. GIT to branżowy standard, który obowiązuje praktycznie we wszystkich firmach zajmujących się tworzeniem aplikacji lub stron internetowych. Sprawia to, że wiedza, którą zdobędziesz po przerobieniu tego kursu, bezpośrednio przełoży się na efektywność Twojej pracy oraz projekty, które tworzysz.
Kurs przygotowany został z myślą o wszystkich, którzy chcą nauczyć się najbardziej popularnego i elastycznego systemu kontroli wersji i wykorzystać go do efektywnej pracy w zespole, jak i na potrzeby indywidualnych projektów. Jest również przeznaczony dla każdego, kto pracuje z kodem źródłowym i chciałby nie tylko tego, by jego zmiany były bezpieczne, ale by jednocześnie mieć swobodę pracy na kilku równoległych wersjach kodu oraz móc swobodnie eksperymentować nie bojąc się o utratę danych. Jeśli chciałbyś dowiedzieć się jak sprawnie korzystać z Githuba oraz zrozumieć, czemu ten system jest tak chętnie stosowany przez programistów na całym świecie - to najlepsza metoda!
Jeśli w twojej codziennej pracy twój zespół do planowania zadań do komunikacji wykorzystuje takie narzędzia
jak e-mail telefon spotkania to wiesz jak łatwo się w tym wszystkim pogubić.
Na szczęście w githubie masz taką specjalną zakładkę która nazywa się issues jest to issue tracker jeśli masz takie zakładki
tutaj warto wejść w opcje i udostępnić taką zakładkę jak issues i projects.
Tutaj w issues możesz dodać sobie różne notatki zgłoszenia i zadania które będziesz mógł przypisać do
swoich współpracowników i śledzić ich postęp ja tutaj utworzę sobie nowe takie zgłoszenie i powiedzmy uzupełnić
sekcję o pracy zespołowej.
Takie sobie ustalam zadanie.
Tutaj mogę napisać w czym jest problem.
Sekcja wygląda
pusto.
Proszę dodać i tutaj także mam różne opcje formatowania mogę stworzyć prostą listę mogę tutaj stworzyć
taką listę zadań czyli dodajemy sobie zadanie powiedzmy
Fork.
Tutaj mogę też w ten sposób zapisać pull request i powiedzmy jeszcze kilka innych podzadań i jedno takie zadanie
będzie mogli śledzić przypisać do jakiejś osoby.
Zróbmy tu jeszcze zostawmy może
w ten sposób pull request tutaj jak podejrzę będzie wyglądało to o tak będzie można tutaj zaznaczyć odznaczyć te zadania.
Piszemy tutaj może do siebie tutaj można dodać etykiety.
Na przykład czy jest to bug duplikat czy jest to ulepszenie.
Możesz także stworzyć własne etykiety po takich etykietach będzie ci łatwo odnaleźć posortować pogrupować
tego typu zgłoszenia.
Ja tu zaznaczę że to jest ulepszenie naszej strony że nie jest to bug i tutaj mamy projekty i mamy kamienie
milowe.
Teraz nim przejdziemy do nich ja utworzę takie zgłoszenie.
Zwróć uwagę że każde zgłoszenie dostaje numer i po tym numerze będziemy mogli z różnych miejsc odnieść
się do takiego zgłoszenia np. bym utworzył tutaj jeszcze jakieś zgłoszenie
dyskusja na temat spisu treści powiedzmy w ten sposób i mogę zadać tutaj pytanie co robimy w sprawie
i podając w ten sposób identyfikator.
Mogę z jednego zadania odwołać się do innego np. co robimy w sprawie uzupełnić trójkę umieścimy uzupełnić sekcję
pracy zespołowej i jeśli w ten sposób zapisze zgłoszenie to tutaj ta trójka stanie się linkiem.
I będę mógł przechodzić i zobaczyć która dyskusja który komunikat który komentarz
odnosi się do którego zgłoszenia także mogę tutaj poszczególne osoby dołączać do takich zapytań uzupełnić
sekcję o pracy zespołowej.
Na przykład tutaj Mateusz Kulesza
czy takie coś możemy dodać
jeśli z małpą osobę to mogę do takiej osoby się odnieść.
I teraz jeśli np. przełączę się na mojego drugiego użytkownika issues
tutaj mamy dwa zadania.
Mamy tą etykietę jeśli w zadaniu znajdują się podzadania.
Mam tutaj informacje co zostało już uzupełnione i jeśli ktoś odznaczy którąś z tych rzeczy np. że fork
jest skończony chociaż to w tej chwili jeszcze nie prawda wrócę do issues tutaj mamy że jeden z dwóch podzadań jest wykonany mamy
jeden komentarz zobaczcie sobie komentarz i tutaj także w powiadomieniach.
Jeśli nie masz otwartej strony i ktoś użyje twojego loginu jako powiadomienia to tak dostaniesz powiadomienie albo email
o tym że ktoś ciebie o coś pyta w którymś z takich zgłoszeń to bardzo fajne miejsce do komunikacji
do dyskusji a także do planowania pracy.
Jeśli wejdziesz w issues i ustalisz sobie ilestones są to takie cele.
Cele lub kamienie milowe które ma głosić np. do kiedy chcemy wykonać jakiś projekt na przykład spis treści
ukończony i powiedzmy do końca miesiąca chcemy mieć ukończony spis treści create milestone i teraz do takiego
milestone'a możemy dodać zgłoszenia będziemy mogli widzieć postęp.
Na ile wszystkie zaplanowane zgłoszenia są już zamknięte.
Tak jak wspomniałem możemy dodawać własne ja tu przejdę jeszcze do issues i powiedzmy że uzupełnić sekcję
o pracy zespołowej dodamy do takiego kamienia milowego.
Czyli chcemy śledzić postęp tego zadania.
Czyli to jest open.
Ono jest otwarte i ja tu dam jeszcze issue.
To będzie zamknięte.
Issue ok.
Przypiszemy do siebie tu zamknę takie zadanie
ok tutaj widzisz mam dwie opcje skomentuj i skomentuj i zamknij np.
Tutaj jest nic do roboty i możesz zakończyć taką dyskusję.
I to oznaczy zgłoszenie jako closed jako zamknięte.
I w ten sposób możesz bardzo łatwo śledzić filtrować sortować np. możemy posortować według zmian najnowszych.
Możemy wybrać tylko otwarte i tylko zamknięte.
Możemy przechwytywać po autorze po etykietach które dodaliśmy wedle projektów i wedle naszych deadline'ów
wedle naszych kamieni milowych i teraz jeśli wrócę do naszych kamieni milowych.
Milestones dodam tamten może zamknięty jeszcze będziesz widział w jaki sposób można śledzić postęp czyli tutaj dodam
do tego spis treści ukończony jak widzisz spis treści ukończony.
Od razu przesunął się tutaj że jest on prawie w połowie ukończony dlatego że tam znajdują się dwa zadania
jedno jest zamknięte drugie otwarte znaczy że 50 procent jest już wykonane w 50 procent complete tu w issues jeszcze zajrzę w milestones
czyli jak widzisz taki pasek postępu będzie ci łatwo mówił elegancko pokazywał na jakim etapie danego
projektu jesteście ile jeszcze zgłoszenie zamknięcia.
Jeśli dodasz zgłoszenie to pasek się odpowiednio skoryguje jeśli zamknie zgłoszenie.
Pasek też będzie się przesuwał na koniec może być close i będziesz miał spis co zostało oddane co zostało
zakończone na jakimś tam etapie.
Tutaj cały czas masz przypomnienie o dacie.
Czyli wiesz do kiedy te zgłoszenia muszą być skończone.
Jeśli pracujecie w atelier pracujecie w agile jeśli pracujecie w scrumie jest to bardzo przydatne bo można takie sobie sprinty w
ten sposób bardzo łatwo planować.
Wiadomo od razu ile tu jest zgłoszeń ile procent już jest zakończone issues jeszcze
oprócz takiej listy mamy jeszcze dodatkowy widok mamy widok projektów czyli możemy stworzyć tutaj nie
jeden a nawet kilka projektów
spis treści na stronie ok i teraz w takim widoku projektów możesz dać kilka kolumn mówiących na jakim etapie
są zadania lub w jakim stanie lub w jaki inny sposób sortowania porządkowania zadań których do tej pory ja wykorzystuję
te trzy etykiety które są tutaj podpowiedziane czyli jedna będzie nazywała się to do czyli do zrobienia druga
będzie nazywała się in progress
ok i trzecią
dodam tutaj będzie nazywała się może jeszcze nie done tylko testing
i ostatnia będzie done czyli skończone zakończone.
Jak widzisz mogę tutaj planować sobie pracę.
Jest to mój taki dashboard i mogę dodać na przykład notatkę przedyskutować spis treści i tutaj 3
jak widzisz mogę robić notatki mogę także używać tego specjalnego formatowania.
Mam też możliwość dodawania stąd zgłoszeń czyli add cards mogę np. dyskusja na temat spisu treści przesunąć
sobie tutaj jeśli przejdę teraz do widoku naszego współpracownika
czyli tutaj nasza różową ma ikonkę przejdę do projektów wybiorę ten projekt który utworzył właściciel
repozytorium.
Tutaj dokładnie widzę wszystkie zaplanowane zadania i np. mogę podjąć tu pracę przesunąć do in progress
czyli np. ja już się tym zajmuje.
I taką każdą zmianę od razu jak widzisz znowu przełączam się na niebieskiego od razu widzą wszyscy współpracownicy.
Jak widzisz w jednym miejscu masz pełen podgląd na to co się dzieje na którym etapie kto się nimi zajmuje
itd.
Dodatkowo powiedzmy że jako właściciel przejdę do jakiegoś zgłoszenia uzupełnić sekcje i to zgłoszenie
jest przypisane do naszego pracownika naszego współpracownika.
Ja to usunę nie przypisane do nikogo.
Dodam do projektu spis treści na stronie i gdy jest dodane do projektu tutaj jest oczekiwanie na przydzielenie
jeżeli jest informacja że to zgłoszenie oczekuje na przydzielenie do odpowiedniej kategorii.
Czy będzie to to do czy in progress czy np. do specjalnej kategorii np. na później i teraz od razu przypiszę jakąś
osobę przypiszę naszego kolaboratora i niech on nasz kolaborator odpowiednio to zgłoszenie przyjmie.
Ciekawostką jest że jeśli ja tutaj wejdę znowu jako kolaborator i jestem na tym ekranie projektów
to w tej samej sekundzie w momencie kiedy ktoś inny takie zadanie doda i takie zadanie jest przypisane
do projektu lub do mnie ja tutaj widzę od razu jak widzisz jest tu powiadomienie mam niebieską lampkę
jedno nowe że i jedno nowe tutaj w sekcji triage czyli czeka na decyzję czyli czeka aż ja wezmę i umieszczę
w którejś z tych kategorii musi iść w to do lub widzę że od razu jest przypisane do mnie więc mogę śmiało tutaj
przeciągnąć do sekcji in progress.
I wtedy wiadomo kto gdzie nad tym pracuje jaki jest postęp wszystko cały widok projektu na pierwszy rzut oka.
I tutaj znowu przejdziemy do projektu jako główny autor i osoba która nam to przypisała będzie automatycznie
w projekcie widziała kto się tym zajmuje jaki jest postęp takiej pracy w jakim ona już jest etapie pracy
czyli jak widzisz github posiada wiele narzędzi bardzo fajnej pracy społecznościowej.
Jeśli do tej pracy chciałeś wprowadzić jeszcze jakąś dokumentację mamy tutaj całą sekcję wiki wiki podobnie
jak issues pozwala tutaj wpisać jakiś tekst.
Też mam raczej bogate formowanie ale pozwala nam stworzyć wiele podstron.
Stronę główną która opisuje dokumentuje projekt w taki sposób żeby wszystkie informacje dokumentacja
projekt zgłoszenia a nawet jak widziałeś wcześniej zgłoszenia błędów żeby wszystko mogło się znaleźć
w jednym miejscu.