Rozwój oprogramowania jest pracą współpracującą. Jako inżynier oprogramowania musisz podzielić się swoją pracą z innymi. Ale udostępnianie kodu i współpraca może się skomplikować. Trudno śledzić różne zmiany, które zachodzą podczas cyklu życia oprogramowania. Tak więc zespoły programistów polegają na narzędziach kontroli wersji, które pomogą w procesie współpracy oprogramowania. Git jest jednym z najważniejszych narzędzi kontroli wersji w branży oprogramowania.
Wskazówka: W tym samouczku dowiesz się, jak korzystać z podstaw git. Każda sekcja kończy się kilkoma pytaniami. Możesz przeczytać pytania przed rozpoczęciem czytania sekcji. Pomoże ci to zrozumieć i zwrócić uwagę na ważne punkty.
Baw się dobrze ucząc się git!
Git: krótki przegląd
Git to rozproszony system kontroli wersji. Śledzi wszelkie zmiany w plikach i folderach. Ułatwia oszczędzanie pracy w toku. Jeśli wystąpił problem, możesz łatwo sprawdzić wcześniejszą wersję pliku lub folderu. W razie potrzeby możesz nawet przywrócić całą bazę kodu do starszej wersji.
Rozwój GIT rozpoczął się w 2005 roku. Grupa jądra Linux używana do utrzymania kodu w Bitkeeper, zastrzeżonym systemie sterowania wersją rozproszoną. Jednak Bitkeeper wycofał bezpłatne użycie produktu. Tak więc Linus Torvalds, twórca i główny twórca Linux, zaprojektował nowy system kontroli wersji rozproszonej open source, który spełniłby wymagania społeczności programistycznej Linux. I urodził się Git.
Jako system kontroli wersji rozproszonej, GIT nie wymaga scentralizowanego organu, aby śledzić kod. Starsze scentralizowane elementy sterujące wersji, takie jak CVS, SVN lub Perforce, wymagają centralnych serwerów, aby zachować historię zmian. Git może śledzić wszystkie zmiany lokalnie i pracować peer-to-peer. Jest więc bardziej wszechstronny niż systemy scentralizowane.
Pytania:
Instalowanie git
W przypadku systemów Linux instalowanie git jest łatwe. Jeśli używasz dystrybucji opartej na debian, takiej jak Ubuntu, możesz użyć APT Install:
$ sudo apt instal git-all
W przypadku Fedory, Rhel lub Centos możesz użyć:
$ sudo dnf instaluj git-all
Możesz sprawdzić, czy Git został zainstalowany, używając następującego polecenia:
$ git --version
Powinien pokazać na przykład wersję zainstalowanej git, na przykład:
Git wersja 2.17.0
Po zainstalowaniu GIT nadszedł czas, aby skonfigurować nazwę użytkownika i e -mail:
$ git config -global użytkownik.Nazwa „Yousername”
$ git config -global użytkownik.e -mail „yourusername@przykład.com "
Możesz sprawdzić, czy konfiguracje zostały poprawnie ustawione za pomocą następującego polecenia:
$ git config -lista
użytkownik.Nazwa = nazwa yourusern
użytkownik.e -mail = yourusername@przykład.com
Wskazówka: Ważne jest, aby ustawić użytkownika.nazwa i użytkownik.e -mail, ponieważ te konfiguracje służą do śledzenia twoich zmian.
pytania
Zrozumienie git koncepcyjnie
Aby użyć git, najpierw musisz zrozumieć te cztery koncepcje:
Katalog roboczy, obszar inscenizacji i repozytorium są lokalne dla twojego komputera. Zdalne repozytorium może być dowolnym innym komputerem lub serwerem. Pomyślmy o tych koncepcjach jako o czterech pudełkach, które mogą pomieścić standardowe dokumenty A1.
Załóżmy, że piszesz dokument ręcznie na papierze A1 przy biurku. Zachowujesz ten dokument w polu katalogu roboczego. Na określonym etapie swojej pracy decydujesz, że jesteś gotowy zachować kopię pracy, którą już wykonałeś. Więc wykonujesz kserokopię bieżącego papieru i wkładasz ją do pudełka na inscenizację.
Pudełko na inscenizację jest tymczasowym obszarem. Jeśli zdecydujesz się odrzucić kserokopię w polu inscenizacji i zaktualizować ją nową kopią dokumentu Directory, nie będzie stałego zapisu tego doktora.
Załóżmy, że jesteś prawie pewien, że chcesz zachować stały zapis dokumentu, który masz w polu inscenizacji. Następnie wykonujesz kserokopię dokumentu pola inscenizacji i przenosisz ją do pola repozytorium.
Po przeniesieniu go do pola repozytorium zdarzają się dwie rzeczy:
Wpis dziennika pomoże Ci znaleźć tę konkretną migawkę dokumentu, jeśli potrzebujesz go w przyszłości.
Teraz, w lokalnym polu repozytorium, masz migawkę swojej pracy i wpis logów. Ale jest to dostępne tylko dla Ciebie. Więc tworzysz kopię lokalnego dokumentu repozytorium wraz z plik dziennika i umieszczasz go w pudełku w firmie Supply Room. Teraz każdy w Twojej firmie może przyjść i zrobić kopię twojego dokumentu i zabrać go do biurka. Pudełko w sali zaopatrzeniowej byłoby zdalne repozytorium.
Zdalne repozytorium przypomina udostępnianie dokumentu za pomocą Dokumentów Google lub Dropbox.
Pytania:
Twoje pierwsze repozytorium GIT
Po zainstalowaniu możesz zacząć tworzyć własne repozytoria GIT. W tej sekcji zainicjujesz swoje repozytorium GIT.
Załóżmy, że pracujesz nad projektem tworzenia stron internetowych. Utwórzmy folder o nazwie Project_Helloworld i przejdźmy do katalogu:
$ mkdir projekt_helloworld
$ CD Project_Helloworld
Możesz powiedzieć Git, aby monitorował ten katalog za pomocą następującego polecenia:
$ git init
Powinieneś zobaczyć takie dane wyjściowe:
Zainicjowane puste repozytorium Git w/Users/Zakh/_Work/Learngit/git_tuorial/
projekt_helloworld/.git
Teraz wszelkie pliki i foldery w Project_Helloworld będą śledzone przez GIT.
Pytania:
Podstawowe polecenia GIT: Status, Zaloguj się, dodaj i zatwierdź
Polecenie statusu pokazuje bieżący warunek twojego katalogu roboczego, a polecenie dziennika pokazuje historię. Wypróbujmy polecenie status:
Status $ git
Na mistrzu oddziału
Początkowe zatwierdzenie
Nic do zatwierdzenia (Utwórz/kopiuj pliki i użyj „git add” do śledzenia)
Wyjście polecenia statusu GIT mówi, że jesteś na gałęzi głównej. Jest to domyślna gałąź, którą inicjuje GIT. (Możesz tworzyć własne gałęzie. Więcej o gałęziach później). Ponadto wyjście mówi, że nie ma nic do popełnienia.
Wypróbujmy polecenie dziennika:
$ git log
Fatal: Twój obecny oddział „mistrz” nie ma jeszcze żadnych zobowiązań
Czas więc utworzyć jakiś kod. Utwórzmy plik o nazwie indeks.HTML:
Możesz użyć edytora tekstu do utworzenia pliku. Po zapisaniu pliku ponownie sprawdź status:
Status $ git
Na mistrzu oddziału
Początkowe zatwierdzenie
Untracked Files:
(Użyj „git dodaj…”, aby uwzględnić w tym, co zostanie popełnione)
indeks.html
Nic dodanego do zatwierdzenia oprócz obecnych plików (użyj „git add” do śledzenia)
Git mówi ci, że masz plik o nazwie indeks.HTML w twoim katalogu roboczym, który nie jest w stanie.
Upewnijmy się, że indeks.HTML jest śledzony. Będziesz musiał użyć polecenia Add:
$ git dodaj indeks.htmlAlternatywnie możesz użyć „.„Opcja dodania wszystkiego w katalogu:
$ git add .
Teraz sprawdźmy ponownie status:
Status $ git
Na mistrzu oddziału
Początkowe zatwierdzenie
Zmiany do popełnienia:
(Użyj „git rm -pobudzony…” do zabezpieczenia)
Nowy plik: indeks.html
Zielona wskazuje, że indeks.Plik HTML jest śledzony przez GIT.
Wskazówka: Jak wspomniano w powyższych instrukcjach, jeśli używasz polecenia:
$ git rm -pobudzony indeks.htmlTwój indeks.HTML powróci do statusu nieprzekonanego. Musisz go ponownie dodać, aby przywrócić go do inscenizacji.]
Sprawdźmy dziennik ponownie:
$ git log
Fatal: Twój obecny oddział „mistrz” nie ma jeszcze żadnych zobowiązań
Więc mimo że Git śledzi indeks.HTML, nie ma jeszcze nic w repozytorium GIT na temat pliku. Popełnijmy nasze zmiany:
$ git commit -m „indeks popełnienia.html "Tekst wewnątrz cytatów po „-m” to komentarz, który przejdzie do pliku dziennika. Możesz użyć git commit bez „-m”, ale wtedy Git otworzy edytor tekstu z prośbą o napisanie komentarzy. Łatwiej jest po prostu umieścić komentarze bezpośrednio na wierszu poleceń.
Teraz sprawdźmy nasz plik dziennika:
$ git log
zatwierdzić F136D22040BA81686C9522F4FF94961A68751AF7
Autor: Zak H
Data: pon. 4 czerwca 16:53:42 2018 -0700
Popełnienie indeksu.html
Możesz zobaczyć, jak pokazuje zatwierdzenie. Z powodzeniem popełniłeś swoje zmiany w lokalnym repozytorium. Jeśli chcesz zobaczyć ten sam dziennik w zwięzły sposób, możesz użyć następującego polecenia:
$ git log -liniaIdąc naprzód, użyjemy tej formy polecenia dziennika, ponieważ ułatwia to zrozumienie, co się dzieje.
Zacznijmy edytować indeks.html. Otwórz indeks.Plik HTML w edytorze i zmień wiersz „Hello World” na „Hello World! To ja!”I zapisz to. Jeśli ponownie sprawdzisz status, zobaczysz, że Git zauważył, że edytujesz plik:
Status $ git
Na mistrzu oddziału
Zmiany nie zostały zainscenizowane w celu zatwierdzenia:
(Użyj „Git dodaj…”, aby zaktualizować to, co zostanie popełnione)
(Użyj „Git Checkout -…”, aby odrzucić zmiany w katalogu roboczym)
Zmodyfikowany: indeks.html
Nie dodano żadnych zmian w celu zatwierdzenia (użyj „git add” i/lub „git commit -a”)
Zmiana jest nadal w twoim katalogu roboczym. Musisz popchnąć go do obszaru inscenizacji. Użyj komendy dodawania używanego wcześniej:
$ git add .
Sprawdź ponownie status:
Status $ git
Na mistrzu oddziału
Zmiany do popełnienia:
(Użyj „Git Reset Head…” do niestrawności)
Zmodyfikowany: indeks.html
Teraz twoje zmiany są w strefie inscenizacji. Możesz go popełnić w repozytorium w celu stałego zabezpieczenia:
$ git commit -m „zmodyfikowany indeks.html do szczęśliwszego przesłania ”
[Master 0586662] Zmodyfikowany indeks.HTML do szczęśliwszej wiadomości
1 Zmieniony plik, 1 wstawianie (+), 1 usunięcie (-)
Możesz sprawdzić dziennik stałe zmiany:
$ git log -linia
0586662 Zmodyfikowany indeks.HTML do szczęśliwszej wiadomości
F136D22 Wskaźnik popełniający.html
W tej sekcji nauczyłeś się używać statusu, rejestrowania, dodawania i popełniania poleceń, aby śledzić swoje dokumenty w git.
Pytania:
Powrót do starszych plików za pomocą kasy
Kiedy popełnisz plik w GIT, tworzy on unikalny skrót dla każdego zatwierdzenia. Możesz je użyć jako identyfikatorów do powrotu do starszej wersji.
Załóżmy, że chcesz wrócić do wcześniejszej wersji indeksu.html. Najpierw spójrzmy na indeks.HTML w obecnym stanie:
indeks $ CAT.htmlMożesz zobaczyć nowszą wersję („Witaj świat! To ja!”). Sprawdźmy dziennik:
$ git log -linia
0586662 Zmodyfikowany indeks.HTML do szczęśliwszej wiadomości
F136D22 Wskaźnik popełniający.html
Hash do poprzedniej wersji to F136D22 („Hello World”). Możesz użyć polecenia kasy, aby dostać się do tej wersji:
$ git kectout f136d22
Uwaga: Sprawdzanie „F136D22”.
Jesteś w stanie „odłączonej głowy”. Możesz się rozejrzeć, wprowadzać zmiany eksperymentalne
i popełnić je, a możesz odrzucić wszelkie zobowiązania, które w tym stanie dokonujesz
bez wpływu na żadne oddziały poprzez wykonanie kolejnej kasy.
Jeśli chcesz utworzyć nowy oddział do zatrzymania zobowiązań, które tworzysz, możesz
Zrób to (teraz lub później) za pomocą -B z poleceniem kasy. Przykład:
Git Checkout -B
Głowa jest teraz na F136D22… popełnianie indeksu.html
Jeśli spojrzysz na treść indeksu.html, zobaczysz:
indeks $ CAT.htmlMa tylko „Hello World”. Więc twój indeks.HTML zmieniło się na starszą wersję. Jeśli sprawdzisz status:
Status $ git
Głowa odłączona na F136D22
Nic do popełnienia, działający katalog czysty
Git w zasadzie mówi ci, że głowa nie jest przy najnowszym zatwierdzeniu. Możesz wrócić do najnowszego zatwierdzenia, sprawdzając gałąź główną za pomocą następującego polecenia:
$ git kectout MasterTeraz, jeśli sprawdzisz status:
Status $ git
Na mistrzu oddziału
Nic do popełnienia, działający katalog czysty
Czerwone ostrzeżenie zniknęło. Ponadto, jeśli sprawdzisz swój indeks.HTML, powinieneś wrócić do najnowszej wersji:
indeks $ CAT.htmlKomenda kasy prowadzi Cię do różnych stanów. Dowiemy się więcej o kasie w następnej sekcji.
Pytania:
Kasa, rozgałęzienie i scalanie
Rozgałęzienie to jedna z najlepszych funkcji Git. Pomaga oddzielić swoją pracę i bardziej eksperymentować. W innych systemach kontroli wersji rozgałęzienie było czasochłonne i trudne. Git ułatwił rozgałęzienie i połączenie.
Jak zauważyłeś w poleceniu statusu, kiedy tworzysz nowe repozytorium GIT, jesteś w gałęzi głównej.
Status $ git
Na mistrzu oddziału
Nic do popełnienia, działający katalog czysty
Załóżmy, że tworzysz stronę internetową dla swojego przyjaciela Davida. Chcesz ponownie wykorzystać kod własnej witryny. Rozgałęzienie to świetne rozwiązanie. Nazwijmy oddział David_Website.
Możesz wydać następujące polecenie:
$ git oddział David_Website
Możesz użyć następującego polecenia, aby zobaczyć wszystkie gałęzie:
$ git oddział -lista
David_Website
* gospodarz
Gwiazda (*) obok mistrza oznacza, że nadal jesteś w gałęzi głównej. Możesz sprawdzić gałąź David_Website za pomocą następującego polecenia:
$ git kector David_Website
Przełączony na oddział „David_Website”
Teraz, jeśli ponownie sprawdź listę oddziałów, zobaczysz:
$ git oddział -lista
* David_Website
gospodarz
Więc jesteś na oddziale David_Website.
Zmieńmy indeks.HTML z „Hello World! To ja!”Do„ Hello World! To David!”A następnie sformatuj i popełnij to:
$ git add .
$ git commit -m „zmieniono stronę internetową dla Davida”
Jeśli sprawdzisz dzienniki, powinieneś zobaczyć:
$ git log -linia
345C0F4 Zmieniona strona internetowa dla Davida
0586662 Zmodyfikowany indeks.HTML do szczęśliwszej wiadomości
F136D22 Wskaźnik popełniający.html
A plik indeksu powinien wyglądać tak:
indeks $ CAT.htmlTeraz sprawdźmy ponownie gałąź główną:
$ git kectout Master
Przełączony na „mistrz” oddziału
Jeśli sprawdzisz status i rejestr:
Status $ git
Na mistrzu oddziału
Nic do popełnienia, działający katalog czysty
$ git log -linia
0586662 Zmodyfikowany indeks.HTML do szczęśliwszej wiadomości
F136D22 Wskaźnik popełniający.html
Zauważ, że nie masz trzeciego zatwierdzenia w Mistrzu. Ponieważ to zatwierdzenie jest utrzymywane tylko w oddziale David_Website.
To jest to, co się stało
Załóżmy, że na tym etapie zdecydujesz, że nie chcesz kontynuować swojej witryny. Po prostu będziesz programistą Davida. Więc chcesz połączyć zmiany w gałęzi David_Website z Mistrzem. Z gałęzi głównej wystarczy wydać następujące polecenia (polecenie status służy do sprawdzenia, czy jesteś we właściwym miejscu):
Status $ git
Na mistrzu oddziału
Nic do popełnienia, działający katalog czysty
$ git scal się David_Website
Aktualizacja 0586662… 345C0F4
Szybkie do przodu
indeks.html | 2 +-
1 Zmieniony plik, 1 wstawianie (+), 1 usunięcie (-)
Wskazówka: Wciągasz zmiany z David_Website na Master. Musisz być na Mistrzu, aby to osiągnąć.
Teraz, jeśli sprawdzisz dziennik na Master, zobaczysz trzecie zatwierdzenie:
$ git log -linia
345C0F4 Zmieniona strona internetowa dla Davida
0586662 Zmodyfikowany indeks.HTML do szczęśliwszej wiadomości
F136D22 Wskaźnik popełniający.html
Pomyślnie połączyłeś oddział David_Website w Mistrzu. I twój indeks.HTML dla Master Branch wygląda identycznie z oddziałem David_Website:
indeks $ CAT.htmlMożesz zatrzymać gałąź David_Website:
$ git oddział -lista
David_Website
* gospodarz
Lub możesz to usunąć:
$ git oddział -d David_Website
Usunięty oddział David_Website (był 345C0F4).
Po usunięciu nie powinieneś już widzieć oddziału David_Website:
$ git oddział -lista
* gospodarz
Wskazówka: Podczas scalania, jeśli Git nie może automatycznie scalić, da ci scalanie błędów konfliktowych. W takim przypadku musisz ręcznie rozwiązać problemy z scalaniem.
Pytania:
Zdalne repozytorium
Do tej pory cała twoja praca była lokalna. Popełniłeś swoje zmiany w lokalnym repozytorium. Ale nadszedł czas, aby podzielić się swoją pracą ze światem.
GIT zdalne repozytorium to w zasadzie kolejna kopia lokalnego repozytorium, do której inni mogą uzyskać dostęp. Możesz skonfigurować serwer i uczynić go zdalnym repozytorium. Ale większość ludzi używa w tym celu Github lub Bitbucket. Możesz tam tworzyć publiczne repozytoria za darmo, do których każdy może uzyskać dostęp.
Utwórzmy zdalne repozytorium na GitHub.
Po pierwsze, musisz utworzyć konto Github []. Po uzyskaniu konta utwórz nowe repozytorium za pomocą przycisku „Nowe repozytorium”. Użyj „Project_Website” jako nazwy repozytorium (możesz wybrać coś innego, jeśli chcesz).
Powinieneś zobaczyć zakładkę kodu z instrukcjami:
echo "# projekt_website" >> readme.MD
Git Init
Git Dodaj Readme.MD
git commit -m „Pierwszy zatwierdzenie”
git zdalny dodaj pochodzenie [email protected]: yourusername/projekt_website.git
Git push -u mistrz pochodzenia
Skopiuj następujące polecenie „GIT Remote Add Add Origin” i uruchom go w swoim katalogu roboczym:
$ git zdalny dodaj pochodzenie [email protected]: yourusername/projekt_website.git
Uwaga: W twoim przypadku YouruserName powinien być tym, czego użyłeś do utworzenia konta Github.
W powyższym poleceniu poinstruowałeś lokalizację zdalnego repozytorium. Polecenie mówi git, że „pochodzenie” twojego katalogu roboczego Project_Helloworld będzie „[email protected]: yourusername/projekt_website.git ”.
Teraz popchnij swój kod z gałęzi głównej do Origin (zdalne repozytorium):
$ git push pochodzenie mistrz
Liczenie obiektów: 9, gotowe.
Kompresja delta za pomocą maksymalnie 4 wątków.
Kompresujące obiekty: 100% (6/6), gotowe.
Pisanie obiektów: 100% (9/9), 803 bajtów | 0 bajtów/s, gotowe.
Ogółem 9 (Delta 2), ponownie użyty 0 (Delta 0)
Pilot: Rozwiązywanie deltów: 100% (2/2), gotowe.
Do [email protected]: yourusername/projekt_website.git
* [Nowa gałąź] Master -> Master
Jeśli odświeżasz przeglądarkę w GitHub, powinieneś zobaczyć, że indeks.Plik HTML jest tam. Więc twój kod jest publiczny, a inni programiści mogą sprawdzić i zmodyfikować kod w zdalnym repozytorium.
Jako programista będziesz pracować z kodem innych ludzi. Warto więc spróbować sprawdzić kod z GitHub.
Chodźmy do nowego katalogu, w którym nic nie masz. Po prawej stronie repozytorium GitHub zauważysz przycisk „Klon lub pobieranie”. Jeśli go klikniesz, powinien podać adres SSH. Uruchom następujące polecenie z adresem SSH:
$ git Clone [email protected]: yourusername/projekt_website.git
Wyjście powinno wyglądać tak:
$ git Clone [email protected]: yourusername/projekt_website.git
Klonowanie do „Project_website”…
Remot: Liczenie obiektów: 9, gotowe.
Zdalny: kompresyjne obiekty: 100% (4/4), gotowe.
Remote: ogółem 9 (Delta 2), ponownie użyty 9 (Delta 2), wciągnięty przez paczkę 0
Otrzymanie obiektów: 100% (9/9), gotowe.
Rozwiązywanie deltów: 100% (2/2), gotowe.
Sprawdzanie łączności… gotowe.
Utworzy projekt_wobsite w czystych folderze. Jeśli wejdziesz do środka, powinieneś zobaczyć indeks.html z twojego projektu_helloworld.
Więc osiągnąłeś następujące czynności:
Niech będzie to kolejny plik z nowego katalogu roboczego Project_Website:
$ Touch Readme.MD
$ git add .
$ git commit -m "Dodano Readme.MD "
$ git push pochodzenie mistrz
Jeśli odświeżasz stronę GitHub Project_Website, powinieneś zobaczyć Readme.tam plik MD.
Uwaga: Po pobraniu kodu z GitHub, działający katalog automatycznie zna pochodzenie. Nie musisz go definiować za pomocą polecenia „GIT Remote Add Add Origin”.
Pytania:
Więcej informacji na temat wszystkich poleceń w Git Docs []. Mimo że dostępne są narzędzia GIT UI, wiersz poleceń jest najlepszym sposobem na opanowanie git. Da ci to silniejsze podstawy do twoich prac rozwojowych.