Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

GIT

548 views

Published on

Simple introduction for programmers.
Tips and tricks for everyday.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

GIT

  1. 1. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorGIT - system kontroli wersjiPiotr KowalskiWyższa Szkoła Informatyki Stosowanej i Zarządzania13 czerwca 20131 / 30
  2. 2. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorWprowadzenieCo to jest system kontroli wersji?Dlaczego GIT zdobył serca inżynierów?System kontroli wersjiOprogramowanie 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
  3. 3. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorScentralizowaneRCSCVSSubversionGNU CSSC, klon SCCSJEDI VCS3 / 30
  4. 4. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorRozproszoneBazaarCodevilleDarcsGITGNU ArchMercurialMonotonesvk4 / 30
  5. 5. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorZamknięte (własnościowe) systemy kontroli wersjiBitKeeper firmy BitMoverCode Co-op firmy Reliable SoftwarePerforce firmy Perforce SoftwareRational ClearCase firmy IBMSablime firmy Lucent TechnologiesStarTeam firmy BorlandVisual SourceSafe firmy MicrosoftVisual Studio Team Foundation Server firmy Microsoft5 / 30
  6. 6. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorInformacje ogólneGITRozproszony 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
  7. 7. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorHistoriaPrace 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
  8. 8. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorZałożeniaTorvalds 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
  9. 9. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorRewizjaDo 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
  10. 10. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorRewizja - dalejUtworzenie 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.txt10 / 30
  11. 11. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorBranchGałąź (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
  12. 12. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorBranch - localStworzenie nowego oraz przełączenie się na niego$ git checkout -b simple-featureSwitched to a new branch ’simple-feature’Usunięcie brancha lokalnie$ git branch -D simple-featureDeleted branch simple-feature (was 2b325c2).Wypchnięcie brancha na serwer$ git push origin simple-featureTotal 0 (delta 0), reused 0 (delta 0)To git@github.com:piecioshka/test.git* [new branch] simple-feature -> simple-feature12 / 30
  13. 13. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorBranch - remoteWyświetlenie wszystkich gałęzi projektu (local & remote)$ git branch -lamaster* simple-featureremotes/origin/masterremotes/origin/simple-featureUsunięcie brancha z serwera$ git push origin :simple-featureTo git@github.com:piecioshka/test.git- [deleted] simple-feature13 / 30
  14. 14. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorTagZnacznik (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/tags14 / 30
  15. 15. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorTag - dalejStworzenie nowego znacznika$ git tag v1.0 -m ”new feature”Wyświetlenie wszystkich tagów projektu$ git tags -lWypchnięcie tagów na serwer$ git push –tags15 / 30
  16. 16. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorWyświetlanie rewizjiWyświetlenie rewizji w sposób czytelny$ git log --graph --pretty=oneline$ gitk16 / 30
  17. 17. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorPrzykład projektuRysunek 1 : Rewizje, branche, tagi17 / 30
  18. 18. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorGitHub - rejestracjaRysunek 2 : Formularz rejestracji konta18 / 30
  19. 19. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorGitHub - logowanieRysunek 3 : Formularz logowania użytkownika19 / 30
  20. 20. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorGitHub - tworzenie nowego repozytoriumRysunek 4 : Link do utworzenia nowego repozytorium20 / 30
  21. 21. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorGitHub - nowe repozytoriumRysunek 5 : Ustal nazwę dla nowego repozytorium21 / 30
  22. 22. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorGitHub - nowe puste repozytoriumRysunek 6 : Początkowe ustawienia repozytorium22 / 30
  23. 23. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorListing 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 master23 / 30
  24. 24. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorGitHub - projektRysunek 7 : Projekt24 / 30
  25. 25. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorListing 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 master25 / 30
  26. 26. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorListing 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 ignore26 / 30
  27. 27. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorPodsumowanieGIT jest:wszechstronny i uniwersalnyrozproszynyprzenośnymultiplatformowywygodnyszybkibezpiecznydarmowyCzego więcej potrzeba?27 / 30
  28. 28. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorWnioski1 Jak się na to zapatrujecie?2 Czy jest sens, używania systemu kontroli wersji, podczasdziałań w pojedynkę?28 / 30
  29. 29. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorPrzydatne adresy WWWhttp://help.github.com/http://github.com/git/githttp://git-scm.com/book/pl/Pierwsze-kroki-Wprowadzenie-do-kontroli-wersjihttps://bitbucket.org/Źródła do tej prezentacji:https://github.com/piecioshka/git-presentation29 / 30
  30. 30. GITPiotr KowalskiWprowadzenieRodzinasystemówSkładoweGIT w życiucodziennymGitHubPodsumowanieWnioskiLinkiAutorAutorGitHub: piecioshkaTwitter: @piecioshka30 / 30

×