Rozproszony system kontroli wersji GIT. Piotr Macuk <piotr@macuk.pl>



Podobne dokumenty
Adam Wójs <adam[shift+2]wojs.pl> git --wprowadzenie

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Git rozproszony system kontroli wersji

Co zostanie wypisane na ekranie? (1)

Systemy kontroli wersji

Programowanie I

Tak. Konrad Ktoso Malawski blog.project13.pl - SFI

Git - podstawy. Błażej Kowalczyk. Koło Naukowe Robotyków KoNaR. 7 listopada 2014

System kontroli wersji GIT. Andrzej Śliwa. java4people 2009

1 Tworzenie własnego zaproszenia dla powłoki bash

System kontroli wersji git

System kontroli wersji Git

Systemy kontroli wersji git od wewnatrz Użycie gita Koniec. git. Rozproszony system kontroli wersji. sphere.pl. Koło Naukowe Sfera

Podstawowy warsztat informatyka

MBUM #2. Zarządzanie kopiami konfiguracji RouterOS. Jacek Rokicki

Platforma GitHub. 1 Cel laboratoriów. 2 GitHub. 2.1 Git. źródeł.

Git i platforma GitHub

Programowanie Systemów Wbudowanych

Zarządzanie projektami informatycznymi

git krótki przewodnik

Git Podstawowe pojęcia, instalacja i konfiguracja

Git, Bitbucket, IntelliJ IDEA

Środowisko programisty. Środowisko programisty 1/35

Programowanie. Systemy kotroli wersji. Janusz Szwabiński. Plan wykładu:

Open Source w służbie developerom

Programowanie zespołowe

SVN sojusz, partnerstwo, współpraca

System kontroli wersji, system zarządzania kodem źródłowym

Konfiguracja i administracja systemem kontroli wersji SVN

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Jacek WOŁOSZYN AUTOMATYZACJA PROCESU ARCHIWIZACJI PRZYROSTOWEJ DANYCH Z WYKORZYSTANIEM GIT AUTOMATING THE PROCESS OF INCREMENTAL BACKUP DATA USING GIT

Wprowadzenie do systemu wersjonowania svn

Narzędzia programistyczne - GIT

Projektowanie oprogramowania systemów NARZĘDZIA PRACY GRUPOWEJ, KONTROLI WERSJI, DOKUMENTOWANIA I ŚLEDZENIA BŁĘDÓW

Ćwiczenia z Git cz. 2

Jak usprawnić tworzenie i zarządzanie stroną na drupalu. Maciej Łukiański

Git, Bitbucket. Narzędzia i środowiska programistyczne. Laboratorium 2. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Gra-zabawka dla niemowląt przygotowana z użyciem w Unity 3D

Korzystanie z VCS oznacza również, że jeśli coś zepsujesz lub utracisz pliki, możesz je łatwo odzyskać.

Systemy kontroli wersji

ponad pracowników ponad pracowników ponad pracowników ponad pracowników

CVS system kontroli wersji

Programowanie w językach skryptowych - Python i Linux Bash

Drupal i GIT. Schemat pracy.

GIT. Rozproszony system kontroli wersji

SUBVERSION TOMASZ ŁUKASZUK

Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje

Technologie Komponentowe. Piotr Łukasik p /

Systemy zarządzania wersjami

Git - Rozproszony System Kontroli Wersji

Subversion. System wersjonowania projektów. Instytut Informatyki Politechnika Poznańska

Podstawowy warsztat informatyka

Michał (plucho) Subversion Wykorzystanie i administracja repozytorium

Microsoft Visual SourceSafe uproszczona instrukcja użytkowania

Nowy system kontroli wersji oprogramowania. Jacek Prucia

Systemy Kontroli Wersji

Platformy Technologiczne

Assembla.com zajęcia 1

łatki darcs w praktyce darcs system kontroli wersji dla wybrednych Paweł Kołodziej 16 grudnia 2008

Partnerzy: Laboratorium 15

Programowanie zespołowe

Wersjonowanie baz danych podczas developmentu. Liquibase. Piotr Pelczar.

System zarządzania wersjami I Subversion

Instrukcja laboratoryjna

Embedded GNU/Linux. Krzysztof Mazur

Konfiguracja i kompilacja jądra Linux. Based on Free Electrons

KONFIGURACJA CVS MAREK GRZEŚ

Instrukcja instalacji oprogramowania dla środowiska Linux

1 Tworzenie własnego zaproszenia dla powłoki bash

Serwer SAMBA UDOSTĘPNIANIE UDZIAŁÓW SIECIOWYCH PIOTR KANIA

Użytkowanie systemów kontroli wersji.

OpenSSL - CA. Kamil Bartocha November 28, Tworzenie CA przy użyciu OpenSSL

Laboratorium Programowania Kart Elektronicznych

Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

Git instrukcja dla studentów

Programowanie i projektowanie obiektowe

Instrukcja laboratoryjna cz.3

SymPy czyli matematyka w Pythonie

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Jak zatrudnić słonie do replikacji baz PostgreSQL

Git Magic. Ben Lynn. Sierpień 2007

Wordpress. Wstęp do tworzenia pluginów. Piotr Wasilewski wasilewski.piotrek (at) gmail.com

Platformy programistyczne:.net i Java WYKŁ AD 1: WPROWADZENIE

EaglePCB_2_FreeCAD (beta)

1. System kontroli wersji Instalacja programu kontroli wersji CVS

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Programowanie Zespołowe

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows

Subversion - jak dziaªa

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Puppet Jak zacząć? Marcin Piebiak Linux Polska sp. z o.o.

SubVersion. Piotr Mikulski. SubVersion. P. Mikulski. Co to jest subversion? Zalety SubVersion. Wady SubVersion. Inne różnice SubVersion i CVS

X P.I.W.O. Portowanie Tizena na nowe architektury na przykładzie ARMv6. Maciej Wereski Samsung R&D Institute Poland. 17 Maj Poznań, Polska

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

Ćwiczenia 9: Zarządzanie konfiguracją Zadania:

Laboratorium nr 3 Podstawy Ruby on Rails

klikamy Next 4. Wybieramy zgodność z systemem Virtual Machine hardware compatibility z listy zaznaczamy Workstation 6 Next 5.

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

Transkrypt:

Rozproszony system kontroli wersji GIT Piotr Macuk <piotr@macuk.pl>

O mnie Programowanie Linux + vim 19 lat 12 lat Kontrola wersji 9 lat Ruby (on Rails) 5 lat Git 2 lata

Agenda Czym jest git Instalacja i konfiguracja Budowa Narzędzia Współpraca Pytania

Historia 2002-2005 BitKeeper 6 kwietnia 2005 zmiana licencji Linus daje sobie 2 tygodnie 18 kwietnia 2005 git obsługuje swój kod 16 czerwca 2005 git obsługuje kod jądra Opiekun projektu: Junio Hamano 14 lutego 2007 wydano git 1.5.0

Założenia Nieliniowy rozwój kodu Rozproszenie pracy Szybkość i stabilność działania Integralność repozytorium Obsługa bardzo dużej ilości plików

Czym jest git? Stupid content tracker Ciekawy system plików Filozofia UNIX-a wiele prostych narzędzi Git!= svn++

Instalacja i konfiguracja $ sudo apt get install git core $ git config global user.name \ "Piotr Macuk" $ git config global user.email \ piotr@macuk.pl /etc/gitconfig ~/.gitconfig.git/config git help config

Nowy projekt $ mkdir p pesel/src $ touch pesel/readme $ touch pesel/src/pesel.rb pesel pesel/readme pesel/src pesel/src/pesel.rb

Utworzenie repozytorium $ git init pesel pesel/readme pesel/src pesel/src/pesel.rb pesel/.git

Ignore $ cat.gitignore *.log *.pid [0 9].txt # production.log jest ok!production.log

Status $ git status # On branch master # Untracked files: # README # src/ nothing added to commit but untracked files present (use "git add" to track)

Nowe pliki $ git add. $ git status # On branch master # Changes to be committed: # new file: README # new file: src/pesel.rb

Commit $ git commit m 'Init' [master (root commit) 7b355ec] Init 0 files changed, 0 insertions(+), 0 deletions( ) create mode 100644 README create mode 100644 src/pesel.rb $ git status # On branch master nothing to commit (working directory clean)

Perspektywa Katalog roboczy Indeks Repozytorium pesel pesel/.git/index pesel/.git Add Commit Commit -a Checkout

Baza obiektów $ cd.git/objects && find e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 29/206d2658aaf11920998fac41a9f5f7047418fb 4b/b2a6cec1e0c51741998cd243367706bbfb3b83 7b/355ecc8206060071ff60038fa034aab580dd59

Zmiana pliku $ echo 'Pesel library.' > README $ git add README $ git commit m 'Doc'

Baza obiektów $ cd.git/objects && find e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 29/206d2658aaf11920998fac41a9f5f7047418fb 4b/b2a6cec1e0c51741998cd243367706bbfb3b83 7b/355ecc8206060071ff60038fa034aab580dd59 d3/db0ebf6844ddc3ef19920e753bdf66f332a565 50/947a5824bab56cf14775c6594745f5b4409f2f 6a/aa7ae7ded1c036bc433a49906733a81da6fc9e

SHA-1 Init Doc pesel tree 4bb2a6c 6aaa7ae pesel/readme blob e69de29 50947a5 pesel/src tree 29206d2 29206d2 pesel/src/pesel.rb blob e69de29 e69de29

Skierowany graf acykliczny Init Doc commit 7b355ec commit d3db0eb pesel tree 4bb2a6c tree 6aaa7ae pesel blob e69de29 README src/pesel.rb tree 29206d2 src blob 50947a5 README

Typy obiektów blob e69de29 blob (size)\0 content tree 4bb2a6c tree (size)\0 100644 blob e69de29 README 040000 tree 29206d2 src commit d3db0eb tag e795501 Commit (size)\0 tree 6aaa7ae parent 7b355ec author Piotr Macuk <piotr@macuk.pl> 1271161942 +0200 committer Piotr Macuk <piotr@macuk.pl> 1271161942 +0200 tag (size)\0 object d3db0eb type commit tag v0.0.1 tagger Piotr Macuk <piotr@macuk.pl> Tue Apr 13 17:24:40 2010 First tag. Doc

Obiekty założenia Objekty są niezmienne Obiekty są tylko dodawane Ten sam sposób przechowywania obj = zlib(sha1(header + content)) obj =>.git/objects/

Gałęzie master F HEAD fix23 D $ git branch fix23 $ git checkout fix23 $ git checkout b fix23 E C $ git branch d fix23 B A

Gałęzie Nowy pomysł lub bug = nowa gałąź Gałąź = wskaźnik na commit Tworzenie gałęzi = zapis 40 bajtów do pliku HEAD = gałąź w której jest katalog roboczy

Tagi $ git tag v0.0.1 $ git tag a v1.0 $ git tag s v1.0signed $ git tag l

Wskaźniki HEAD master F fix23 D $ cd.git/refs/ && find tags/v0.0.1 heads/master heads/fix23 E C tag: v0.0.1 B A

Merge $ git merge fix23 $ git branch d fix23 HEAD HEAD master master fix23 G F D F D E C E C B B A A

Rebase + merge $ git checkout fix23 $ git rebase master HEAD fix23 HEAD master HEAD D2 D2 master fix23 master C2 C2 F D F F E B C E B $ git checkout master $ git merge fix23 $ git branch d fix23 E B A A A

Historia log $ git log commit d3db0ebf6844ddc3ef19920e753bdf66f332a565 Author: Piotr Macuk <piotr@macuk.pl> Date: Tue Apr 13 14:43:39 2010 +0200 Doc commit 7b355ecc8206060071ff60038fa034aab580dd59 Author: Piotr Macuk <piotr@macuk.pl> Date: Tue Apr 13 14:32:22 2010 +0200 Init

Historia log $ git log $ git log p $ git log file1 file2 dir3 $ git log tag..branch $ git log HEAD~10.. $ git log 10 $ git log author=fred $ git log grep="some text" $ git log S"some code"

Historia show $ git show commit d3db0ebf6844ddc3ef19920e753bdf66f332a565 Author: Piotr Macuk <piotr@macuk.pl> Date: Tue Apr 13 14:43:39 2010 +0200 Dokumentacja diff git a/readme b/readme index e69de29..50947a5 100644 a/readme +++ b/readme @@ 0,0 +1 @@ +Pesel library.

Różnice Katalog roboczy Indeks Repozytorium pesel pesel/.git/index pesel/.git git diff git diff HEAD git diff cached

Undo $ git commit amend $ git reset soft $ git reset hard # UWAGA

Adresowanie d3db0ebf6844ddc3ef19920e753bdf66f332a565 d3db0eb HEAD, master, fix23, v0.0.1 master@{1 week ago}, fix23@{yesterday} master~5, fix23^2, d3db0eb~2 '':/opis'' d3db0eb..7b355ec

Protokoły git ssh (+ gitshell) http/https File rsync http://github.com

Współpraca Każde repozytorium jest samowystarczalne Tworzymy sieć repozytoriów Publiczne i prywatne Główne repozytorium to tylko umowa $ git clone url dir $ git remote add janek url $ git pull (lub git fetch) $ git push

Lokalnie private private jan ola jan$ git remote add ola file://home/ola/pesel ola$ git remote add jan file://home/jan/pesel $ git pull # bez push! ola$ git branch a * master remotes/jan/master

Współdzielenie shared private private private private $ git clone bare pesel pesel.git $ scp r pesel.git server:~/ $ git remote add shared server:~/pesel.git

Open source public public main public public private private private Opiekun Developer Developer

Łaty Współpraca na zasadzie wysyłania łat $ git format patch master~3 $ git apply *.patch $ git add $ git commit

Wiele narzędzi git grep git cherry-pick git revert git archive git stash git blame git bisect git fsck git gc git prune

Narzędzia zewnętrzne gitk (tcl/tk) tig (console) qgit (Qt) TortoiseGit (Windows) GitX (Mac OS X) git svn (import, proxy)

Linki http://git-scm.com http://whygitisbetterthanx.com

Pytania?

Dziękuję za uwagę :) Piotr Macuk <piotr@macuk.pl>