Git Samouczek
Pierwsze kroki z Git
Szukaj…
Uwagi
Git to darmowy, rozproszony system kontroli wersji, który umożliwia programistom śledzenie zmian w kodzie za pomocą „migawek” (zatwierdzeń) w jego bieżącym stanie. Wykorzystanie commits pozwala programistom na wspólne testowanie, debugowanie i tworzenie nowych funkcji. Wszystkie zatwierdzenia są przechowywane w tak zwanym „repozytorium Git”, które może być hostowane na komputerze, serwerach prywatnych lub witrynach typu open source, takich jak Github.
Git pozwala również użytkownikom tworzyć nowe „gałęzie” kodu, co pozwala różnym wersjom kodu żyć obok siebie. Umożliwia to scenariusze, w których jedna gałąź zawiera najnowszą stabilną wersję, inna gałąź zawiera zestaw nowych funkcji, a kolejna gałąź zawiera inny zestaw funkcji. Git sprawia, że proces tworzenia tych gałęzi, a następnie scalania ich z powrotem, jest prawie bezbolesny.
Git ma 3 różne „obszary” dla twojego kodu:
- Katalog roboczy : obszar, w którym będziesz wykonywać całą swoją pracę (tworzenie, edytowanie, usuwanie i organizowanie plików)
- Obszar przejściowy: Obszar, w którym będziesz wyświetlać zmiany, które wprowadziłeś w katalogu roboczym
- Repozytorium : gdzie Git stale przechowuje zmiany, które wprowadziłeś jako różne wersje projektu
Git został pierwotnie stworzony do zarządzania źródłem jądra Linux. Ułatwiając je, zachęca do małych zobowiązań, rozwidlania projektów i łączenia widelców oraz posiadania wielu krótkotrwałych oddziałów.
Największą zmianą dla osób przyzwyczajonych do CVS lub Subversion jest to, że każda kasa zawiera nie tylko drzewo źródłowe, ale także całą historię projektu. Typowe operacje, takie jak różnicowanie wersji, sprawdzanie starszych wersji, zatwierdzanie (do lokalnej historii), tworzenie gałęzi, sprawdzanie innej gałęzi, łączenie gałęzi lub plików łat można wykonywać lokalnie, bez konieczności komunikacji z serwerem centralnym. W ten sposób usuwane jest największe źródło opóźnień i zawodności. Komunikacja z repozytorium „upstream” jest potrzebna tylko w celu uzyskania najnowszych zmian i opublikowania lokalnych zmian innym programistom. To przekształca to, co wcześniej było ograniczeniem technicznym (ten, kto ma repozytorium jest właścicielem projektu) w wybór organizacyjny (twój „upstream” jest tym, z kim zdecydujesz się zsynchronizować).
Wersje
Wersja | Data wydania |
---|---|
2.13 | 2017-05-10 |
2.12 | 24.02.2017 |
2.11.1 | 02.02.2017 |
2.11 | 29.11.2016 |
2.10.2 | 28.10.2016 |
2.10 | 02.09.2016 |
2.9 | 13.06.2016 |
2.8 | 28.03.2016 |
2.7 | 04.10.2015 |
2.6 | 28.09.2015 |
2.5 | 2015-07-27 |
2.4 | 30.04.2015 |
2.3 | 2015-02-05 |
2.2 | 26.11.2014 |
2.1 | 16.08.2014 |
2.0 | 2014-05-28 |
1.9 | 14.02.2014 |
1.8.3 | 2013-05-24 |
1.8 | 21.10.2012 |
1.7.10 | 2012-04-06 |
1.7 | 13.02.2010 |
1.6.5 | 10.10.2009 |
1.6.3 | 2009-05-07 |
1.6 | 2008-08-17 |
1.5.3 | 2007-09-02 |
1.5 | 14.02.2007 |
1.4 | 2006-06-10 |
1.3 | 2006-04-18 |
1.2 | 2006-02-12 |
1.1 | 2006-01-08 |
1.0 | 2005-12-21 |
0,99 | 2005-07-11 |
Utwórz pierwsze repozytorium, a następnie dodaj i zatwierdź pliki
W wierszu polecenia najpierw sprawdź, czy masz zainstalowany Git:
We wszystkich systemach operacyjnych:
git --version
W systemach operacyjnych typu UNIX:
which git
Jeśli nic nie zostanie zwrócone lub polecenie nie zostanie rozpoznane, być może będziesz musiał zainstalować Git w swoim systemie, pobierając i uruchamiając instalator. Zobacz stronę główną Git, aby uzyskać wyjątkowo jasne i łatwe instrukcje instalacji.
Po zainstalowaniu Git skonfiguruj swoją nazwę użytkownika i adres e-mail . Zrób to przed zatwierdzeniem.
Po zainstalowaniu Git przejdź do katalogu, który chcesz umieścić pod kontrolą wersji i utwórz puste repozytorium Git:
git init
Spowoduje to utworzenie ukrytego folderu .git
, który zawiera instalacje potrzebne do działania Gita.
Następnie sprawdź, jakie pliki Git doda do nowego repozytorium; ten krok jest wart szczególnej uwagi:
git status
Przejrzyj wynikową listę plików; możesz powiedzieć Gitowi, który z plików umieścić w kontroli wersji (unikaj dodawania plików z poufnymi informacjami, takimi jak hasła lub pliki, które po prostu zaśmiecają repozytorium):
git add <file/directory name #1> <file/directory name #2> < ... >
Jeśli wszystkie pliki na liście powinny być udostępniane wszystkim, którzy mają dostęp do repozytorium, pojedyncze polecenie doda wszystko do bieżącego katalogu i jego podkatalogów:
git add .
Spowoduje to „wyśrodkowanie” wszystkich plików, które zostaną dodane do kontroli wersji, i przygotowanie ich do zatwierdzenia przy pierwszym zatwierdzeniu.
W przypadku plików, których nigdy nie chcesz kontrolować, utwórz i wypełnij plik o nazwie .gitignore
przed uruchomieniem polecenia add
.
Zatwierdź wszystkie dodane pliki wraz z komunikatem zatwierdzenia:
git commit -m "Initial commit"
Spowoduje to utworzenie nowego zatwierdzenia z podaną wiadomością. Zatwierdzenie jest jak zapisanie lub migawka całego projektu. Możesz teraz wypychać lub przesyłać je do zdalnego repozytorium, a później możesz wrócić do niego w razie potrzeby.
Jeśli pominiesz parametr -m
, otworzy się domyślny edytor, w którym możesz edytować i zapisać komunikat zatwierdzenia.
Dodawanie pilota
Aby dodać nowego pilota, użyj polecenia git remote add
na terminalu, w katalogu, w którym przechowywane jest repozytorium.
Polecenie git remote add
przyjmuje dwa argumenty:
- Zdalna nazwa, na przykład
origin
- Zdalny adres URL, na przykład
https://<your-git-service-address>/user/repo.git
git remote add origin https://<your-git-service-address>/owner/repository.git
UWAGA: Przed dodaniem pilota musisz utworzyć wymagane repozytorium w usłudze git, po dodaniu pilota będziesz mógł pchać / wyciągać zatwierdzenia.
Sklonuj repozytorium
Polecenie git clone
służy do kopiowania istniejącego repozytorium Git z serwera na komputer lokalny.
Na przykład, aby sklonować projekt GitHub:
cd <path where you'd like the clone to create a directory>
git clone https://github.com/username/projectname.git
Aby sklonować projekt BitBucket:
cd <path where you'd like the clone to create a directory>
git clone https://[email protected]/username/projectname.git
Spowoduje to utworzenie katalogu o nazwie projectname
na komputerze lokalnym, zawierającego wszystkie pliki w zdalnym repozytorium Git. Obejmuje to pliki źródłowe projektu, a także podkatalog .git
który zawiera całą historię i konfigurację projektu.
Aby podać inną nazwę katalogu, np. MyFolder
:
git clone https://github.com/username/projectname.git MyFolder
Lub sklonować w bieżącym katalogu:
git clone https://github.com/username/projectname.git .
Uwaga:
Podczas klonowania do określonego katalogu, katalog musi być pusty lub nie istnieje.
Możesz także użyć wersji polecenia
ssh
:git clone [email protected]:username/projectname.git
Wersja https
i wersja ssh
są równoważne. Jednak niektóre usługi hostingowe, takie jak GitHub, zalecają używanie https
zamiast ssh
.
Konfigurowanie zdalnego pilota
Jeśli sklonowałeś rozwidlenie (np. Projekt open source na Github), możesz nie mieć dostępu wypychanego do repozytorium wyjściowego, więc potrzebujesz zarówno rozwidlenia, jak i możesz pobrać repozytorium wyjściowe.
Najpierw sprawdź nazwy zdalne:
$ git remote -v
origin https://github.com/myusername/repo.git (fetch)
origin https://github.com/myusername/repo.git (push)
upstream # this line may or may not be here
Jeśli upstream
jest już tam (to jest w niektórych wersjach GIT) należy ustawić adres URL (aktualnie jest pusty):
$ git remote set-url upstream https://github.com/projectusername/repo.git
Jeśli nie ma tam upstream lub jeśli chcesz także dodać widelec znajomego / kolegi (obecnie nie istnieją):
$ git remote add upstream https://github.com/projectusername/repo.git
$ git remote add dave https://github.com/dave/repo.git
Udostępnianie kodu
Aby udostępnić swój kod, tworzysz repozytorium na zdalnym serwerze, na który skopiujesz swoje lokalne repozytorium.
Aby zminimalizować wykorzystanie miejsca na serwerze zdalnym, tworzysz samo repozytorium: takie, które zawiera tylko obiekty .git
i nie tworzy kopii roboczej w systemie plików. Jako bonus ustawiłeś ten pilot jako serwer nadrzędny, aby łatwo udostępniać aktualizacje innym programistom.
Na zdalnym serwerze:
git init --bare /path/to/repo.git
Na komputerze lokalnym:
git remote add origin ssh://username@server:/path/to/repo.git
(Zauważ, że ssh:
jest tylko jednym z możliwych sposobów uzyskania dostępu do zdalnego repozytorium.)
Teraz skopiuj lokalne repozytorium do zdalnego:
git push --set-upstream origin master
Dodanie --set-upstream
(lub -u
) utworzyło referencję upstream (śledzenia), która jest używana przez bez Gargowe polecenia Git, np. git pull
.
Ustawianie nazwy użytkownika i adresu e-mail
You need to set who you are *before* creating any commit. That will allow commits to have the right author name and email associated to them.
Nie ma to nic wspólnego z uwierzytelnianiem podczas wypychania do zdalnego repozytorium (np. Podczas wypychania do zdalnego repozytorium przy użyciu konta GitHub, BitBucket lub GitLab)
Aby zadeklarować tę tożsamość dla wszystkich repozytoriów, użyj git config --global
Spowoduje to zapisanie ustawienia w pliku .gitconfig
użytkownika: np. $HOME/.gitconfig
lub w systemie Windows, %USERPROFILE%\.gitconfig
.
git config --global user.name "Your Name"
git config --global user.email [email protected]
Aby zadeklarować tożsamość dla pojedynczego repozytorium, użyj git config
w repozytorium.
Spowoduje to zapisanie ustawienia w indywidualnym repozytorium, w pliku $GIT_DIR/config
. np. /path/to/your/repo/.git/config
.
cd /path/to/my/repo
git config user.name "Your Login At Work"
git config user.email [email protected]
Ustawienia zapisane w pliku konfiguracyjnym repozytorium będą miały pierwszeństwo przed konfiguracją globalną podczas korzystania z tego repozytorium.
Porady: jeśli masz różne tożsamości (jedna dla projektu typu open source, jedna w pracy, jedna dla prywatnych repozytoriów, ...) i nie chcesz zapomnieć o ustawieniu odpowiedniej dla każdej innej repozytorii, nad którą pracujesz :
Usuń tożsamość globalną
git config --global --remove-section user.name git config --global --remove-section user.email
Aby zmusić git do szukania twojej tożsamości tylko w ustawieniach repozytorium, a nie w konfiguracji globalnej:
git config --global user.useConfigOnly true
W ten sposób, jeśli zapomnisz ustawić user.name
i user.email
dla danego repozytorium i starać się dokonać, będzie można zobaczyć:
no name was given and auto-detection is disabled
no email was given and auto-detection is disabled
Informacje o poleceniu
Aby uzyskać więcej informacji na temat dowolnego polecenia git - tj. Szczegółowe informacje na temat działania polecenia, dostępnych opcji i innej dokumentacji - użyj opcji --help
lub polecenia help
.
Na przykład, aby uzyskać wszystkie dostępne informacje o poleceniu git diff
, użyj:
git diff --help
git help diff
Podobnie, aby uzyskać wszystkie dostępne informacje o poleceniu status
, użyj:
git status --help
git help status
Jeśli potrzebujesz jedynie szybkiej pomocy pokazującej znaczenie najczęściej używanych flag wiersza poleceń, użyj -h
:
git checkout -h
Skonfiguruj SSH dla Git
Jeśli używasz systemu Windows, otwórz Git Bash . Jeśli używasz komputera Mac lub Linux, otwórz terminal.
Przed wygenerowaniem klucza SSH możesz sprawdzić, czy masz jakieś istniejące klucze SSH.
Wyświetl zawartość katalogu ~/.ssh
:
$ ls -al ~/.ssh
# Lists all the files in your ~/.ssh directory
Sprawdź listę katalogów, aby sprawdzić, czy masz już publiczny klucz SSH. Domyślnie nazwy plików kluczy publicznych są następujące:
id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub
Jeśli zobaczysz istniejącą parę kluczy publicznych i prywatnych, której chcesz użyć na swoim koncie Bitbucket, GitHub (lub podobnym), możesz skopiować zawartość pliku id_*.pub
.
Jeśli nie, możesz utworzyć nową parę kluczy publiczny i prywatny za pomocą następującego polecenia:
$ ssh-keygen
Naciśnij klawisz Enter lub Return, aby zaakceptować domyślną lokalizację. Wprowadź i ponownie wprowadź hasło po wyświetleniu monitu lub pozostaw puste.
Upewnij się, że Twój klucz SSH został dodany do agenta ssh. Uruchom agenta ssh w tle, jeśli jeszcze nie działa:
$ eval "$(ssh-agent -s)"
Dodaj klucz SSH do agenta ssh. Zauważ, że będziesz musiał zastąpić id_rsa
w poleceniu nazwą pliku klucza prywatnego :
$ ssh-add ~/.ssh/id_rsa
Jeśli chcesz zmienić strumień danych istniejącego repozytorium z HTTPS na SSH, możesz uruchomić następującą komendę:
$ git remote set-url origin ssh://[email protected]:7999/projects/your_project.git
Aby sklonować nowe repozytorium przez SSH, możesz uruchomić następującą komendę:
$ git clone ssh://[email protected]:7999/projects/your_project.git
Instalacja Git
Przejdźmy do korzystania z Git. Po pierwsze - musisz go zainstalować. Możesz uzyskać na wiele sposobów; dwie główne to instalacja ze źródła lub instalacja istniejącego pakietu na twoją platformę.
Instalowanie ze źródła
Jeśli możesz, na ogół warto zainstalować Git ze źródła, ponieważ otrzymasz najnowszą wersję. Każda wersja Gita zwykle zawiera przydatne ulepszenia interfejsu użytkownika, więc uzyskanie najnowszej wersji jest często najlepszą drogą, jeśli czujesz się komfortowo, kompilując oprogramowanie ze źródła. Jest tak również w przypadku, gdy wiele dystrybucji Linuksa zawiera bardzo stare pakiety; więc jeśli nie korzystasz z bardzo aktualnej dystrybucji lub nie używasz backportów, najlepszym rozwiązaniem może być instalacja ze źródła.
Aby zainstalować Git, musisz mieć następujące biblioteki, od których zależy Git: curl, zlib, openssl, expat i libiconv. Na przykład, jeśli korzystasz z systemu, który ma yum (taki jak Fedora) lub apt-get (taki jak system oparty na Debianie), możesz użyć jednego z tych poleceń, aby zainstalować wszystkie zależności:
$ yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
libz-dev libssl-dev
Gdy masz wszystkie niezbędne zależności, możesz śmiało pobrać najnowszą migawkę ze strony internetowej Git:
http://git-scm.com/download Następnie skompiluj i zainstaluj:
$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
Po wykonaniu tej czynności możesz także pobrać Git za pośrednictwem samego Gita w celu uzyskania aktualizacji:
$ git clone git://git.kernel.org/pub/scm/git/git.git
Instalowanie w systemie Linux
Jeśli chcesz zainstalować Git na Linuksie za pomocą instalatora binarnego, możesz to zrobić za pomocą podstawowego narzędzia do zarządzania pakietami, które jest dołączone do Twojej dystrybucji. Jeśli korzystasz z Fedory, możesz użyć yum:
$ yum install git
Lub jeśli korzystasz z dystrybucji opartej na Debianie, takiej jak Ubuntu, spróbuj apt-get:
$ apt-get install git
Instalowanie na komputerze Mac
Istnieją trzy proste sposoby instalacji Gita na komputerze Mac. Najłatwiej jest użyć graficznego instalatora Git, który można pobrać ze strony SourceForge.
http://sourceforge.net/projects/git-osx-installer/
Rycina 1-7. Instalator Git OS X. Innym ważnym sposobem jest instalacja Gita przez MacPorts ( http://www.macports.org) . Jeśli masz zainstalowane MacPorts, zainstaluj Git przez
$ sudo port install git +svn +doc +bash_completion +gitweb
Nie musisz dodawać wszystkich dodatków, ale prawdopodobnie będziesz chciał dołączyć + svn na wypadek, gdybyś kiedykolwiek musiał używać Git z repozytoriami Subversion (patrz Rozdział 8).
Homebrew ( http://brew.sh/) to kolejna alternatywa dla instalacji Git. Jeśli masz zainstalowany Homebrew, zainstaluj Git przez
$ brew install git
Instalowanie w systemie Windows
Instalacja Git w systemie Windows jest bardzo łatwa. Projekt msysGit ma jedną z łatwiejszych procedur instalacji. Wystarczy pobrać plik exe instalatora ze strony GitHub i uruchomić go:
http://msysgit.github.io
Po zainstalowaniu masz zarówno wersję wiersza polecenia (w tym klienta SSH, który przyda się później), jak i standardowy interfejs GUI.
Uwaga na temat korzystania z systemu Windows: powinieneś używać Git z dostarczoną powłoką msysGit (styl uniksowy), pozwala to na użycie złożonych linii poleceń podanych w tej książce. Jeśli z jakiegoś powodu potrzebujesz użyć natywnej konsoli systemu Windows / konsoli wiersza poleceń, musisz użyć podwójnych cudzysłowów zamiast pojedynczych cudzysłowów (dla parametrów ze spacjami w nich) i musisz podać parametry kończące się akcentem okrężnym (^ ), jeśli są ostatnie w linii, ponieważ jest to symbol kontynuacji w systemie Windows.