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



Podobne dokumenty
System kontroli wersji Git

Systemy kontroli wersji

Rozproszony system kontroli wersji GIT. Piotr Macuk

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

System kontroli wersji git

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Co zostanie wypisane na ekranie? (1)

Systemy kontroli wersji

Programowanie zespołowe

Programowanie I

Zarządzanie projektami informatycznymi

Git rozproszony system kontroli wersji

Git i platforma GitHub

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

Git, Bitbucket, IntelliJ IDEA

Środowisko programisty. Środowisko programisty 1/35

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

1 Tworzenie własnego zaproszenia dla powłoki bash

git krótki przewodnik

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

Open Source w służbie developerom

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

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

Podstawowy warsztat informatyka

Assembla.com zajęcia 1

CVS system kontroli wersji

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

Narzędzia programistyczne - GIT

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

Wprowadzenie do systemu wersjonowania svn

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

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

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

Ćwiczenia z Git cz. 2

Programowanie zespołowe

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

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

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

Git Podstawowe pojęcia, instalacja i konfiguracja

System kontroli wersji GIT. Andrzej Śliwa. java4people 2009

Michał (plucho) Subversion Wykorzystanie i administracja repozytorium

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

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

Ćwiczenia 9: Zarządzanie konfiguracją Zadania:

Drupal i GIT. Schemat pracy.

SVN sojusz, partnerstwo, współpraca

Podstawowy warsztat informatyka

Technologie Komponentowe. Piotr Łukasik p /

Programowanie Systemów Wbudowanych

Git instrukcja dla studentów

Konfiguracja i administracja systemem kontroli wersji SVN

Programowanie Zespołowe

Systemy zarządzania wersjami

Platformy Technologiczne

KONFIGURACJA CVS MAREK GRZEŚ

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

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

TortoiseHg + Windows konfiguracja

Partnerzy: Laboratorium 15

GIT. Rozproszony system kontroli wersji

Systemy Kontroli Wersji

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

SUBVERSION TOMASZ ŁUKASZUK

Programowanie w językach skryptowych - Python i Linux Bash

Spring Web MVC, Spring DI

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

Podstawy języka skryptowego Lua

Microsoft Test Manager

Usprawnienie procesu zarządzania konfiguracją. Marcin Piebiak Solution Architect Linux Polska Sp. z o.o.

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Podział programu na moduły

SymPy czyli matematyka w Pythonie

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Python. python 2, python 3 (nowsza specyfikacja języka, choć niekoniecznie częściej używana). Wymagane pakiety

Python. python 2, python 3 (nowsza specyfikacja języka, choć niekoniecznie częściej używana). Wymagane pakiety

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

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

I - Microsoft Visual Studio C++

Zasady skutecznego działania Specyfikacja wymagań Kontrola jakości artefaktów

Pobieranie argumentów wiersza polecenia

Praktyczne warsztaty programistyczne. Idea. Warsztaty

Programowanie proceduralne w języku C++ Podstawy

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Wprowadzenie do systemów kontroli wersji RCS i CVS

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Signals + Threads: Qt vs. Boost

#1. Do wykonania jest biblioteka matematyczna, pozwalająca na pisanie działań w ciągu: math.add(1).sub(1).div(1);

Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; }

Programowanie Obiektowe Java

Podstawy Programowania.

Krótkie wprowadzenie do korzystania z OpenSSL

Sieciowa komunikacja procesów - XDR i RPC

Wprowadzenie do Doctrine ORM

CI/CD - CO TO? PO CO? JAK?

Git - Rozproszony System Kontroli Wersji

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

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Podstawy Programowania

Transkrypt:

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

Życie programisty A) Rozwój projektu B) Naprawianie błędów C) Refaktoryzacja kodu

Ekstremalny przykład Wersja jądra Lb-a programistów Lb-a linii kodu 2.6.38 1,198 14,211,814 2.6.39 1,258 14,537,764 3.0 1,131 14,651,135 3.1 1,168 14,776,002 3.2 1,316 15,004,006 Źródło: http://storage.pardot.com/6342/48856/lf_kernel_development_2012.pdf

Co to jest system kontroli wersji? System kontroli wersji (ang. version/revision control system) jest to oprogramowanie służące do śledzenia zmian głównie w kodzie źródłowym oraz pomocy programistom w łączeniu i modyfikacji zmian dokonanych przez wiele osób w różnych momentach. Źródło: http://pl.wikipedia.org/wiki/system_kontroli_wersji

Git jest system kontroli wersji.

Co to jest github? github to hosting repozytoriów git z dodatkowymi narzędziami i elementami social network.

Narzędzia które dostarcza github Collaboration, Wiki, Issue Tracking, Code Review, Code Hosting, Activity Streams, Developer Profiles, Explore GitHub

Teoria i praktyka pracy z repozytorium

Rozpoczęcie pracy Inicjalizacja nowego repozytorium $ git init Klonowanie istniejącego repozytorium $ git clone <repository> <directory>

Konfiguracja Podpis autora zmiany: $ git config --global user.name <username> E-mail autora zmiany: $ git config --global user.email <email>

Pliki w repozytorium Praca w lokalnym repozytorium odbywa się w trzech obszarach:

Pierwsza rewizja $ touch main.cc # Tworzymy plik $ git status $ git add main.cc $ git status $ git commit -m Moj pierwszy commit $ git log /* main.cc */ int main(int argc, char* argv[]) { return 0; }

Sprawdzanie stanu plików Sprawdzenie bieżącego stanu repozytorium: $ git status

# On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: menu.cc # new file: menu.h # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: main.cc # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Makefile

Staging area (Poczekalnia) Śledzenie nowego pliku $ git add <filepattern> Zmiana nazwy / usuniecie pliku z repozytorium $ git mv <source> <destination> $ git rm <filepattern>

Zatwierdzanie zmian Zmiany zatwierdzamy za pomocą: $ git commit Zostaniemy poproszeni o podanie opisu wprowadzonej modyfikacji. Każda rewizja identyfikowana jest za pomocą sumy kontrolnej SHA-1.

Dziennik zmian Wyświetlanie dziennika zmian projektu $ git log

Edycja ostatniej rewizji $ # Zatwierdźmy modyfikacje main.cc $ git add main.cc $ git commit -m Hello World $ /* main.cc */ #include <iostream> int main(int argc, char* argv[]) { std::cout << Hello World << std::endl; return 0; }

Edycja ostatniej rewizji $ # Poprawiamy main.cc $ git diff main.cc $ git add main.cc $ git commit --amend /* main.cc */ #include <iostream> int main(int argc, char* argv[]) { std::cout << Hello Git << std::endl; return 0; }

Różnice w plikach Wyświetlanie różnic między aktualną wersją plików a wersją z poczekalni $ git diff <file> Wyświetlanie różnic między aktualną wersją plików a ostatnio zatwierdzoną wersją $ git diff --cached <file>

Cofanie modyfikacji $ # Modyfikujemy nasz projekt $ git add main.cc $ git status $ git checkout -- main.cc $ git status Cofanie wprowadzonych zmian (ale nie zatwierdzonych) $ git checkout -- <file>

Cofanie rewizji Cofanie rewizji i pozostawienie zmian. $ git reset --soft <commit> Cofanie rewizji i usunięcie zmian z rewizji. $ git reset --hard <commit>

Usuwanie pliku z poczekalni Usuwanie pliku dodanego do poczekalni $ git reset <file> Wprowadzone zmiany nie zostaną usunięte

Rozgałęzienia Git pozwala na tworzenie rozgałęzień kodu źródłowego. Zarządzanie rozgałęzieniami: $ git branch

Tworzenie gałęzi Tworzenie oraz przejście do nowej gałęzi $ git branch <name> $ git checkout <name> lub w krótszej wersji $ git checkout -b <name>

Scalanie gałęzi Do scalania gałęzi służy polecenie $ git merge <name> Podczas scalania gałęzi może dojść do konfliktów, które będzie trzeba rozwiązać ręcznie.

Rozwiązywanie konfliktów $ git checkout -b test $ # Modyfikacja main.cc $ git add main.cc $ git commit -m Hello Git form test $ git checkout master $ # Modyfikacja main.cc $ git add main.cc $ git commit -m Hello Git from master $ git merge test Auto-merging main.cc CONFLICT (content): Merge conflict in main.cc Automatic merge failed; fix conflicts and then commit the result.

Rozwiązywanie konfliktów Scalenie gałęzi nie powiodło się ponieważ obie rewizje zawierają modyfikacje tej samej linii. $ # Ręczna edycja plików zawierających konflikty $ git add. $ git commit

Praca z zdalnymi repozytoriami Zarządzanie zdalnymi repozytoriami $ git remote Dodanie zdalnego repozytorium $ git remote add <name> <url>

Zaciąganie zmian z zdalnego repozytorium Ściągniecie zmian z zdalnego repozytorium $ git fetch <repository> Ściągniecie i scalenie zmian z zdalnego repozytorium $ git pull <repository>

Zaciąganie zdalnej gałęzi Pobieranie do lokalnego repozytorium zdalnej gałęzi: $ git fetch <repository> $ git checkout track <repository>/<branch>

Wypychanie zmian do zdalnego repozytorium Wypychanie zmian do zdalnego repozytorium $ git push Wypychanie zmian i utworzenie gałęzi w zdalnym repozytorium $ git push -u <repository> <branch>

Pytania?

Linki Pro Git Książka dostępna: http://git-scm.com/book Try Git Interaktywny tutorial: http://try.github.com

Dziękuje za uwagę.