GIT

30
GIT Piotr Kowalski Wprowadzenie Rodzina systemów Skladowe GIT w życiu codziennym GitHub Podsumowanie Wnioski Linki Autor GIT - system kontroli wersji Piotr Kowalski Wyższa Szkola Informatyki Stosowanej i Zarządzania 13 czerwca 2013 1 / 30

description

Simple introduction for programmers. Tips and tricks for everyday.

Transcript of GIT

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

GIT - system kontroli wersji

Piotr Kowalski

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

13 czerwca 2013

1 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Wprowadzenie

Co to jest system kontroli wersji?

Dlaczego GIT zdobył serca inżynierów?

System kontroli wersji

Oprogramowanie służące do śledzenia zmian głównie w kodzieźródłowym oraz pomocy programistom w łączeniu zmiandokonanych przez wiele osób w różnych momentach.

2 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Scentralizowane

RCS

CVS

Subversion

GNU CSSC, klon SCCS

JEDI VCS

3 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Rozproszone

Bazaar

Codeville

Darcs

GIT

GNU Arch

Mercurial

Monotone

svk

4 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Zamknięte (własnościowe) systemy kontroli wersji

BitKeeper firmy BitMover

Code Co-op firmy Reliable Software

Perforce firmy Perforce Software

Rational ClearCase firmy IBM

Sablime firmy Lucent Technologies

StarTeam firmy Borland

Visual SourceSafe firmy Microsoft

Visual Studio Team Foundation Server firmy Microsoft

5 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Informacje ogólne

GIT

Rozproszony system kontroli wersji. Stworzył go Linus Torvaldsjako narzędzie wspomagające rozwój jądra Linux. GIT stanowiwolne oprogramowanie i został opublikowany na licencji GNUGPL w wersji 2.

6 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Historia

Prace nad GITem rozpoczęły się po tym, jak BitKeeper,używany wtedy do rozwoju Linuksa, przestał być darmowydla projektów o otwartym kodzie źródłowym.

Prace nad GITem rozpoczęły się 3 kwietnia 2005 roku,projekt został ogłoszony 6 kwietnia, 7 kwietnia GITobsługiwał kontrolę wersji swojego własnego kodu, 18kwietnia pierwszy raz wykonano łączenie kilku gałęzi kodu,27 kwietnia GIT został przetestowany pod względemszybkości z wynikiem 6,7 łat na sekundę, a 16 czerwcaLinux 2.6.12 był hostowany przez GITa.

7 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Założenia

Torvalds szukał rozproszonego systemu kontroli wersji, którymógłby być użyty zamiast BitKeepera, głównymi kryteriamiwyboru były:

Wziąć przykład z CVS, czego nie robić.

System powinien być rozproszony.

System powinien być chroniony przed błędami wrepozytorium (przypadkowymi, jak awaria twardego dysku,jak i złośliwymi, wprowadzonymi przez kogoś).

System powinien być szybki.

Pierwsze dwa punkty wyeliminowały wszystko próczMonotone’a, a czwarty punkt wyeliminował wszystko, więcTorvalds postanowił napisać własny system kontroli wersji.

8 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Rewizja

Do wprowadzenia zmian w projekcie służy specjalna operacjazatwierdzania (ang. commit). Nie jest ona nigdy wykonywanaprzez GIT automatycznie. Jeśli uznamy, że bieżacy stan plikówlub folderów jest istotny, należy samodzielnie wykonać operacjęzatwierdzania.

Operację zatwierdzania możemy w pewnym uproszczeniutraktować jako zapisanie bieżącego stanu wszystkich plików ifolderów projektu w danej chwili.

Wykonanie operacji zatwierdzania powoduje zapisanie rewizji(ang. commit, revision).

9 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Rewizja - dalej

Utworzenie rewizji

$ git add plik.txt$ git commit -m ”dodajemy plik.txt”

[master 66601e8] dodajemy plik.txt1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 plik.txt

10 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Branch

Gałąź (ang. branch) jest to inna ścieżka dla rewizji. Domyślnagałąź to branch master.Branche nie są ze sobą połączone, chyba, że zostanązmergowane.Stworzona rewizja istnieje tylko w jednym branchu, chyba, żezrobimy cherry-picka.

11 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Branch - local

Stworzenie nowego oraz przełączenie się na niego

$ git checkout -b simple-feature

Switched to a new branch ’simple-feature’

Usunięcie brancha lokalnie

$ git branch -D simple-feature

Deleted branch simple-feature (was 2b325c2).

Wypchnięcie brancha na serwer

$ git push origin simple-feature

Total 0 (delta 0), reused 0 (delta 0)To [email protected]:piecioshka/test.git* [new branch] simple-feature -> simple-feature

12 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Branch - remote

Wyświetlenie wszystkich gałęzi projektu (local & remote)

$ git branch -la

master* simple-featureremotes/origin/masterremotes/origin/simple-feature

Usunięcie brancha z serwera

$ git push origin :simple-feature

To [email protected]:piecioshka/test.git- [deleted] simple-feature

13 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Tag

Znacznik (ang. tag) jest to rewizja która jest specjalniezapisana w repozytorium. Rewizja ta zostaje oznakowanaspecjnalnym komentarzem, aby w przyszłości szybciej dotrzećto odpowiedniego etapu projektu.

Przykład poprawnie stworzonych znaczników:

https://github.com/adobe/brackets/tags

14 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Tag - dalej

Stworzenie nowego znacznika

$ git tag v1.0 -m ”new feature”

Wyświetlenie wszystkich tagów projektu

$ git tags -l

Wypchnięcie tagów na serwer

$ git push –tags

15 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Wyświetlanie rewizji

Wyświetlenie rewizji w sposób czytelny

$ git log --graph --pretty=oneline$ gitk

16 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Przykład projektu

Rysunek 1 : Rewizje, branche, tagi

17 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

GitHub - rejestracja

Rysunek 2 : Formularz rejestracji konta

18 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

GitHub - logowanie

Rysunek 3 : Formularz logowania użytkownika

19 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

GitHub - tworzenie nowego repozytorium

Rysunek 4 : Link do utworzenia nowego repozytorium

20 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

GitHub - nowe repozytorium

Rysunek 5 : Ustal nazwę dla nowego repozytorium

21 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

GitHub - nowe puste repozytorium

Rysunek 6 : Początkowe ustawienia repozytorium

22 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Listing 1: Pierwszy projekt$ mkdir test && cd test$ touch README.md$ git init$ git add README.md$ git commit -m "Pierwszy commit"$ git remote add origin [email protected]:piecioshka/test.git$ git push -u origin master

23 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

GitHub - projekt

Rysunek 7 : Projekt

24 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Listing 2: Praca lokalna$ mkdir test && cd test$ touch README.md$ git init$ git add README.md$ git commit -m "Pierwszy commit"

Listing 3: Praca zdalna$ git remote add origin [email protected]:piecioshka/test.git$ git push -u origin master

25 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Listing 4: Najpopularniejsze polecenia$ git add$ git status$ git log$ git branch$ git checkout$ git diff$ git pull$ git push$ git reset$ git tag$ git blame$ git summary$ git ignore

26 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Podsumowanie

GIT jest:

wszechstronny i uniwersalny

rozproszyny

przenośny

multiplatformowy

wygodny

szybki

bezpieczny

darmowy

Czego więcej potrzeba?

27 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Wnioski

1 Jak się na to zapatrujecie?2 Czy jest sens, używania systemu kontroli wersji, podczas

działań w pojedynkę?

28 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Przydatne adresy WWW

http://help.github.com/

http://github.com/git/git

http://git-scm.com/book/pl/Pierwsze-kroki-Wprowadzenie-do-kontroli-wersji

https://bitbucket.org/

Źródła do tej prezentacji:

https://github.com/piecioshka/git-presentation

29 / 30

GIT

Piotr Kowalski

Wprowadzenie

Rodzinasystemów

Składowe

GIT w życiucodziennymGitHub

Podsumowanie

Wnioski

Linki

Autor

Autor

GitHub: piecioshka

Twitter: @piecioshka

30 / 30