Niezbędne uwagi wstępne:
- Przeczytaj, powtórz i zrozum artykuł o git . Pomoże to upewnić się, że wszystko jest już skonfigurowane i gotowe do pracy.
- Zainstaluj Intellij IDEA.
- Poświęć godzinę czasu osobistego na całkowite wchłonięcie.
Sklonuj projekt lokalnie
Istnieją dwie opcje tutaj.- Jeśli masz już konto na Githubie i chcesz przesłać coś później, lepiej udostępnić projekt sobie i sklonować swoją kopię. Jak zrobić fork - opisałem w tym artykule w rozdziale przykładowy schemat działania forka .
- Sklonuj z mojego repozytorium i rób wszystko lokalnie, bez możliwości wypchnięcia całości na serwer. W końcu to będzie moje repozytorium))
-
Skopiuj adres projektu:
-
Otwórz Intellij IDEA i wybierz Pobierz z kontroli wersji:
-
Skopiuj i wklej adres do projektu:
-
Zostaniesz poproszony o utworzenie projektu Intellij IDEA. Akceptujemy ofertę:
-
Ponieważ nie ma systemu kompilacji i nie jest to tematem artykułu, wybierz opcję Utwórz projekt z istniejących źródeł :
-
Następny będzie obraz olejny taki jak ten: Załatwiliśmy klonowanie, teraz możemy się rozejrzeć.
Najpierw spójrz na Intellij IDEA jako interfejs Git
Przyjrzyj się jeszcze raz sklonowanemu projektowi: już tam możesz uzyskać wiele informacji na temat systemu kontroli wersji. Pierwszy to panel Kontroli wersji w lewym dolnym rogu. Można w nim znaleźć wszystkie lokalne zmiany i uzyskać listę zatwierdzeń (analogicznie do git log). Przejdźmy do wykładu Log . Istnieje pewien element wizualny, który pomaga dokładnie zrozumieć, jak przebiegał proces tworzenia. Na przykład możesz zobaczyć, że utworzono nową gałąź z dodanym nagłówkiem zatwierdzenia do txt , który następnie został scalony z gałęzią główną. Jeśli klikniesz na zatwierdzenie, w prawym rogu zobaczysz wszystkie informacje na temat zatwierdzenia: wszystkie zmiany i ich metadane. Co więcej, możesz zobaczyć, jakie zmiany zostały wprowadzone. Co więcej, konflikt został tam rozwiązany. IDEA również doskonale to pokazuje. Jeśli dwukrotnie klikniesz plik, który został zmieniony podczas tego zatwierdzenia, zobaczymy, jak konflikt został rozwiązany: Można zauważyć, że po prawej i lewej stronie znajdowały się dwie wersje tego samego pliku, które należało połączyć w jedną. A w środku efekt końcowy. Kiedy projekt ma wiele gałęzi, zatwierdzeń i użytkowników pracujących w projekcie, musisz wyszukiwać osobno według gałęzi (oddziału), użytkownika (użytkownika) i daty (data): Ostatnią rzeczą, którą chcę wyjaśnić przed rozpoczęciem, jest to, jak zrozumieć w jakim oddziale jesteśmy. Dam ci chwilę na przeszukanie. Znalazłeś? Poddajesz się? :D W prawym dolnym rogu znajduje się przycisk Git: master , gdzie po Git: pokazuje, na której gałęzi aktualnie znajduje się projekt. Jeśli klikniesz przycisk, możesz zrobić wiele przydatnych rzeczy: przenieść się do innego oddziału, utworzyć nowy, zmienić nazwę istniejącego i tak dalej.Praca z repozytorium
Przydatne skróty klawiszowe
Aby kontynuować pracę, musisz zapamiętać kilka bardzo przydatnych skrótów klawiszowych:- ctrl + t – pobierz najnowsze zmiany ze zdalnego repozytorium (git pull).
- ctrl + k – zatwierdź/wyświetl wszystkie aktualnie dostępne zmiany. Dotyczy to zarówno plików nieśledzonych, jak i zmodyfikowanych (zobacz mój artykuł o git, tam jest to opisane) (git commit).
- ctrl + shift + k to polecenie wypychania zmian do zdalnego repozytorium. Wszystkie zatwierdzenia, które zostały utworzone lokalnie i nie znajdują się jeszcze na zdalnym, będą oferowane do wypychania (git Push).
- alt + ctrl + z – cofa zmiany w konkretnym pliku do stanu ostatniego utworzonego zatwierdzenia w lokalnym repozytorium. Jeśli wybierzesz cały projekt w lewym górnym rogu, możesz cofnąć zmiany we wszystkich plikach.
Czego chcemy?
Aby pracować, musimy opanować podstawowy skrypt, który jest używany wszędzie. Zadanie polega na zaimplementowaniu nowej funkcjonalności w osobnej gałęzi i wypchnięciu jej do zdalnego repozytorium (wtedy trzeba utworzyć kolejne pull request dla głównej gałęzi, ale to wykracza poza zakres naszego artykułu). Co muszę zrobić?-
Pobierz wszystkie zmiany znajdujące się aktualnie w gałęzi głównej (na przykład master).
-
Na podstawie tego głównego utwórz osobny dla swojej pracy.
-
Wdrażaj nową funkcjonalność.
-
Przejdź do głównego oddziału i sprawdź, czy podczas pracy nie zaszły jakieś nowe zmiany. Jeśli tak nie było, wszystko jest w porządku, a jeśli tak, wykonujemy następujące czynności: przechodzimy do działającej gałęzi i przenosimy zmiany z głównej gałęzi do naszej. Jeśli wszystko poszło dobrze, to świetnie. Ale mogą pojawić się konflikty. Można je rozwiązać z wyprzedzeniem, bez marnowania czasu na zdalnym repozytorium.
Wydawałoby się, po co to robić? Jest to zasada dobrej formy, która zapobiega powstawaniu konfliktów po wypchnięciu oddziału do lokalnego repozytorium (istnieje oczywiście szansa, że nadal będą istnieć, ale staje się ona znacznie mniejsza).
- Wypchnij zmiany do zdalnego repozytorium.
Odbierać zmiany ze zdalnego serwera?
Dodałem opis do pliku README z nowym zatwierdzeniem i chcę otrzymać te zmiany. Dostępny jest wybór pomiędzy łączeniem i zmianą bazy, jeśli zmiany zostały wprowadzone zarówno w repozytoriach lokalnych, jak i zdalnych. Wybierz połączenie. Enter ctrl + t : W rezultacie możesz zobaczyć, jak zmienił się plik README, tj. pobrano zmiany ze zdalnego repozytorium, a w prawym dolnym rogu widać wszystkie szczegóły zmian, które przyszły z serwera.Utwórz nową gałąź w oparciu o master
Tutaj wszystko jest proste.-
Przejdź do prawego dolnego rogu i kliknij Git: master , wybierz + New Branch .
Pozostaw pole wyboru Oddział do kasy i wpisz nazwę nowego oddziału. Dla mnie byłoby to readme-improver .
Następnie Git: master zmieni się na Git: readme-improver .
Symulacja pracy równoległej
Aby pojawiły się konflikty, ktoś musi je stworzyć :D Zmodyfikuję plik README z nowym zatwierdzeniem przez przeglądarkę i w ten sposób zasymuluję pracę równoległą. Mówią, że ktoś podczas mojej pracy dokonał zmian w tym samym pliku co ja, co doprowadzi do konfliktu. Usunę słowo „całkowicie” z wiersza 10.Zaimplementuj swoją funkcjonalność
Zadanie polega na zmianie pliku README i dodaniu opisu do nowego artykułu, czyli praca w gicie odbywa się poprzez Intellij IDEA. Dodaj to: Zmiany zostały zakończone, teraz możesz utworzyć zatwierdzenie. Naciśnij klawisz skrótu ctrl + k , otrzymamy: Przed utworzeniem zatwierdzenia musisz dokładnie przyjrzeć się temu, co jest oferowane w tym oknie. Specjalnie dodałem strzałkę, aby pokazać, gdzie szukać. Jest tam wiele ciekawych rzeczy. W sekcji Commit Message wpisujemy treść commita, a aby został on utworzony należy kliknąć przycisk Commit . Nadal nie znalazłem jak to zrobić za pomocą skrótu klawiszowego, więc jeśli ktoś znajdzie to napisz, będzie mi bardzo miło. Piszemy, że plik README się zmienił i tworzymy zatwierdzenie. W rezultacie w lewym dolnym rogu pojawi się alert z nazwą zatwierdzenia:Sprawdź, czy gałąź główna uległa zmianie
Zadanie wykonaliśmy, działa, napisaliśmy testy, wszystko jest w porządku. Ale przed wypchnięciem na serwer musisz sprawdzić, czy w tym czasie zaszły jakieś zmiany w głównej gałęzi. Jak to mogło się stać? To bardzo proste: ktoś po Tobie dostał zadanie i ten ktoś wykonał je szybciej od Ciebie. Dlatego przechodzimy do gałęzi master. Aby to zrobić, musisz zrobić w prawym dolnym rogu, jak pokazano na poniższym rysunku: W gałęzi master naciśnij ctrl + t , aby pobrać najnowsze zmiany ze zdalnego serwera. Jeśli spojrzysz na to, jakie zmiany zostały wprowadzone, łatwo zauważysz, co się stało: jak widzisz, słowo „całkowicie” zostało usunięte. Być może to ktoś z działu marketingu uznał, że tak nie da się tego napisać i dał twórcom zadanie jego aktualizacji. Mamy teraz lokalnie najnowszą wersję gałęzi master. Wróćmy do Readme-Improver . Teraz musimy przenieść zmiany z gałęzi głównej na naszą. Robimy: Jeśli wszystko wykonałeś poprawnie, wynikiem powinien być konflikt w pliku README: Jest tu również wiele informacji, które należy zrozumieć i przyswoić. To pokazuje listę (w naszym przypadku jednego elementu) plików, które powodują konflikty. Możemy wybrać trzy opcje:- zaakceptuj swoje - akceptuj tylko zmiany z pliku Readme-Improver.
- zaakceptuj ich - akceptuj tylko zmiany od mistrza.
- scalaj - sam zdecyduj, co zachować, a co usunąć.
- Są to zmiany wprowadzone w programie Readme-Improver.
- Wynik. Na razie jest tak jak było przed zmianami.
- Zmiany z gałęzi master.
GO TO FULL VERSION