Post on 05-Jul-2015
description
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 git@github.com: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 git@github.com: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 git@github.com: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 git@github.com: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