Git. Milan Rybář

Podobné dokumenty
PŘIDÁNÍ SOUBORŮ DO OBLASTI PŘIPRAVENÝCH ZMĚN

Git. The information manager from hell. Robin Obůrka

Vladimír

Subversion. Jakub Vlček

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

Evoluce deploye Od FTP po automatický deploy

GIT hands-on. Mgr. Šimon Tóth. 12. dubna () GIT hands-on 12. dubna / 25

Výukový materiál zpracovaný v rámci projektu EU peníze do škol. illness, a text

Obecné informace o cvičeních

PRAVIDLA ZPRACOVÁNÍ STANDARDNÍCH ELEKTRONICKÝCH ZAHRANIČNÍCH PLATEBNÍCH PŘÍKAZŮ STANDARD ELECTRONIC FOREIGN PAYMENT ORDERS PROCESSING RULES

WORKSHEET 1: LINEAR EQUATION 1

9. Archivace a verzování svn

Jak importovat profily do Cura (Windows a

7.VY_32_INOVACE_AJ_UMB7, Tázací dovětky.notebook. September 08, 2013

Doxygen. Jakub Břečka

EU peníze středním školám digitální učební materiál

Introduction to MS Dynamics NAV

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT

Tipy a triky nejenom v shellu nejenom pro programátory

O2 Managed Backup & Restore Power

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT

VCS CVS - Concurrent Version System SVN - Subversion Distribuované verzovací systémy DVCS Verzování. Základní pojmy verzování souborů

Git aneb správa verzí trochu jinak

POSLECH. Anglický jazyk 9. třída Mgr. Martin Zicháček. Jazyk Úroveň Autor Kód materiálu. Z á k l a d o v ý t e x t :

Immigration Studying. Studying - University. Stating that you want to enroll. Stating that you want to apply for a course.

Immigration Studying. Studying - University. Stating that you want to enroll. Stating that you want to apply for a course.

Čtvrtý Pentagram The fourth Pentagram

My Year Manager is Vedoucí našeho ročníku je. P.E. is on Tělocvik mám v

VZDĚLÁVACÍ MATERIÁL. Pololetní písemná práce pro 5. ročník Mgr. Iveta Milostná VY_32_INOVACE_A11 Pořadové číslo: 11.

Základní pojmy verzování souborů. SVN - Subversion vybrané pokročilé vlastnosti. Správce verzí. Repositár

Příručka aplikace KNetWalk. Fela Winkelmolen Eugene Trounev

VY_32_INOVACE_06_Předpřítomný čas_03. Škola: Základní škola Slušovice, okres Zlín, příspěvková organizace

User manual SŘHV Online WEB interface for CUSTOMERS June 2017 version 14 VÍTKOVICE STEEL, a.s. vitkovicesteel.com

Digitální učební materiál

Czech Republic. EDUCAnet. Střední odborná škola Pardubice, s.r.o.

Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost.

Číslo projektu: CZ.1.07/1.5.00/ Název projektu: Inovace a individualizace výuky

Introduction to Navision 4.00 Jaromír Skorkovský, MS., PhD.

Přehled témat. Základní pojmy

Database systems. Normal forms

Invitation to ON-ARRIVAL TRAINING COURSE for EVS volunteers

Gymnázium, Brno, Slovanské nám. 7 WORKBOOK. Mathematics. Teacher: Student:

Byznys a obchodní záležitosti

Kids Fun Day Summer on the farm

Výukový materiál zpracovaný v rámci operačního programu Vzdělávání pro konkurenceschopnost

Angličtina O-06 A 1. Označte správnou variantu. (10x1 bod)

Digitální učební materiály

SCM = Source Code Management software, základní typologie rozdělení je podle počtu a umístění základního úložiště kódu(=repository) na:

Tabulka 1 Stav členské základny SK Praga Vysočany k roku 2015 Tabulka 2 Výše členských příspěvků v SK Praga Vysočany Tabulka 3 Přehled finanční

WL-5480USB. Quick Setup Guide

U DOKTORA. U DOKTORKY

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

DC circuits with a single source

VŠEOBECNÁ TÉMATA PRO SOU Mgr. Dita Hejlová

WELCOME TO THE CZECH REPUBLIC, SUMMER JOB

PITSTOP VY_22_INOVACE_26

5.VY_32_INOVACE_AJ_UMB5, Vztažné věty.notebook. September 09, 2013

Social Media a firemní komunikace

Microsoft Lync WEB meeting

Maturitní téma: Operační MS-DOS

EXACT DS OFFICE. The best lens for office work

Postup objednávky Microsoft Action Pack Subscription

MySQL sežere vaše data

Instalace MS Dynamics NAV 5.0. Stručný návod/installation manual

ADC Young Creative. Brief MOBIL.CZ

Nová éra diskových polí IBM Enterprise diskové pole s nízkým TCO! Simon Podepřel, Storage Sales

Verzovací systémy. Pořádek především!

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

Present Perfect x Past Simple Předpřítomný čas x Minulý čas Pracovní list

Optimalizace dotazů a databázové transakce v Oracle

UPM3 Hybrid Návod na ovládání Čerpadlo UPM3 Hybrid 2-5 Instruction Manual UPM3 Hybrid Circulation Pump 6-9

PRAVIDLA ZPRACOVÁNÍ URGENTNÍCH ELEKTRONICKÝCH DOMÁCÍCH PLATEBNÍCH PŘÍKAZŮ URGENT ELECTRONIC DOMESTIC PAYMENT ORDERS PROCESSING RULES

Travel General. General - Essentials. General - Conversation. Asking for help. Asking if a person speaks English

CZ.1.07/1.5.00/ Zefektivnění výuky prostřednictvím ICT technologií III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT

Vánoční sety Christmas sets

POSLECH. Mona has got her eleventh birthady on Sathurday, she she is planning a big party for her friends. She met her friend John.

Blast Rozhraní DeviceNet

Základní škola Nový Bor,

CLIL a projektové vyučování

AJ 3_08_Shopping.notebook. November 08, úvodní strana

Anglický jazyk. Souslednost časů. Anglický jazyk. Vytvořil: Eva Burianová. Souslednost. DUM číslo: 9. Souslednost časů.

USING VIDEO IN PRE-SET AND IN-SET TEACHER TRAINING

Obsah. 2 Obsah. Úvod... strana 3. Gingerbread Boy... strana 4. Sleeping Beauty... strana 11. The Old Grey Cat Is Sleeping...

Zprávy používané při vypořádání denního trhu MC CZ-SK-HU / Messages used on the day-ahead MC CZ-SK-HU

Aktivita CLIL Fyzika 2

III_ _The Verb to Be sloveso Být pracovní list.doc III_ _The Verb to Be sloveso Být pracovní list - řešení.doc

Téma 8. Náklady kapitálu. Kapitálová struktura a její optimalizace

Sociální sítě jako Velký bratr. Martin Klubal AEC a.s.

Utilita L32 LogSync v

Instalace MS Dynamics NAV 5.0. Stručný návod/installation manual

Střední odborná škola stavební a Střední odborné učiliště stavební Rybitví

Výukový materiál zpracovaný v rámci operačního programu Vzdělávání pro konkurenceschopnost

Vytvoření pokročilé Fotogalerie v Drupalu - Views

Život v zahraničí Studium

Úvod do verzovacích systémů

Zubní pasty v pozměněném složení a novém designu

Novinky v IBM Notes a Domino. CubeTeam Dan Vrána

Základy programování (IZP)

Why PRIME? 20 years of Erasmus Programme Over 2 million students in total Annually

GENERAL INFORMATION MATCH: ALSA PRO ARENA MASTERS DATE: TIME SCHEDULE:

Transkript:

Git Milan Rybář <email@milanrybar.cz>

Obsah Procházení historie Tagy Rebase Patch

Procházení historie Mocný příkaz git log Mnoho možností $ git log commit 8c7a786b6c8eae8eac91083cdc9a6e337bc133b0 Author: Junio C Hamano <gitster@pobox.com> Date: Sun Oct 21 13:56:23 2012-0700 Git 1.8.0 Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 8ead1bfe111085ef1ad7759e67340f074996b244 Merge: 87a5461 f6dd784 Author: Junio C Hamano <gitster@pobox.com> Date: Wed Oct 17 15:55:46 2012-0700 Merge tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui git-gui 0.17.0... * tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui: git-gui 0.17 git-gui: Don't prepend the prefix if value looks like a full path

git log Základní možnosti -p diff u každého commitu -<n> omezení výstupu na n položek $ git log -p -1 commit 8c7a786b6c8eae8eac91083cdc9a6e337bc133b0 Author: Junio C Hamano <gitster@pobox.com> Date: Sun Oct 21 13:56:23 2012-0700 Git 1.8.0 Signed-off-by: Junio C Hamano <gitster@pobox.com> diff --git a/documentation/relnotes/1.8.0.txt b/documentation/relnotes/1.8.0.txt index 04f6ace..43883c1 100644 --- a/documentation/relnotes/1.8.0.txt +++ b/documentation/relnotes/1.8.0.txt @@ -4,16 +4,18 @@ Git v1.8.0 Release Notes Backward compatibility notes ---------------------------- -In the next major release, we will change the behavior of the "git -push" command. When "git push [$there]" does not say what to push, we -have used the traditional "matching" semantics so far (all your branches were -sent to the remote as long as there already are branches of the same...

git log Základní možnosti 2 --stat statistika u každého commitu Seznam modifikovaných souborů Počet modifikovaných souborů Počet přidaných a smazaných řádků v těchto souborech $ git log --stat -1 commit 8c7a786b6c8eae8eac91083cdc9a6e337bc133b0 Author: Junio C Hamano <gitster@pobox.com> Date: Sun Oct 21 13:56:23 2012-0700 Git 1.8.0 Signed-off-by: Junio C Hamano <gitster@pobox.com> Documentation/RelNotes/1.8.0.txt 22 +++++++++++++--------- Documentation/git.txt 5 +++++ GIT-VERSION-GEN 2 +- 3 files changed, 19 insertions(+), 10 deletions(-)

git log Formátování výstupu --pretty formátování výstupu oneline každý commit na jedné řádce $ git log --pretty=oneline -3 8c7a786b6c8eae8eac91083cdc9a6e337bc133b0 Git 1.8.0 8ead1bfe111085ef1ad7759e67340f074996b244 Merge tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui f6dd784ed4c1705d465b1238f9a5971f2733e582 git-gui 0.17 short, full a fuller liší se pouze množstvím informací format definice vlastního formátování $ git log --pretty=format:"%h - %an, %ar : %s" 8c7a786 - Junio C Hamano, 2 weeks ago : Git 1.8.0 8ead1bf - Junio C Hamano, 3 weeks ago : Merge tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui f6dd784 - Pat Thoyts, 3 weeks ago : git-gui 0.17 df46eda - Andrew Wong, 5 weeks ago : git-gui: Don't prepend the prefix if value looks like a full path e3d06ca - Andrew Wong, 5 weeks ago : git-gui: Detect full path when parsing arguments 87a5461 - Junio C Hamano, 3 weeks ago : Git 1.8.0-rc3 3d0a2d6 - Junio C Hamano, 3 weeks ago : Merge git://github.com/git-l10n/git-po d2bfef2 - Junio C Hamano, 3 weeks ago : Sync with 1.7.12.4...

git log Formátování výstupu 2 Užitečné parametry pro --pretty=format Option Description of Output %H Commit hash %h Abbreviated commit hash %T Tree hash %t Abbreviated tree hash %P Parent hashes %p Abbreviated parent hashes %an %ae %ad %ar Author name Author e-mail Author date (format respects the date= option) Author date, relative Option Description of Output %cn Committer name %ce Committer email %cd Committer date %cr Committer date, relative %s Subject

git log Vizuální znázornění --graph ASCII graf znázorňující branch a merge historii $ git log --pretty=format:"%h %s" --graph * 8c7a786 Git 1.8.0 * 8ead1bf Merge tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui \ * f6dd784 git-gui 0.17 * df46eda git-gui: Don't prepend the prefix if value looks like a full path * e3d06ca git-gui: Detect full path when parsing arguments * 5a5e4d2 git-gui: remove.git/cherry_pick_head after committing * 9ef7508 git-gui: Fix a loose/lose mistake * 44e88ce git-gui: Fix semi-working shortcuts for unstage and revert * 272b929 Merge branch 'rt/trans' \ * 1a8cdac git-gui: de.po: translate "remote" as "extern" * 774b79f git-gui: de.po: translate "bare" as "bloă" * 3c3737d git-gui: de.po: consistently add untranslated hook names within braces * fda1ba0 git-gui: preserve commit messages in utf-8 * c42939d git-gui: open console when using --trace on windows / * ef42057 git-gui: fix a typo in po/ files * 446f822 git-gui: Use PWD if it exists on Mac OS X * ba5d445 git-gui: fix git-gui crash due to uninitialized variable...

git log Filtrování Implicitně se zobrazuje historie pouze k poslednímu commitu (HEAD), resp. tam kde se nacházíme --branches[=<pattern>] - zobrazí všechny branches nebo omezí podle <pattern> --tags[=<pattern>] podobné jako u --branches --all zobrazí celou historii --merges pouze merge commits --no-merges bez merge commits

git log Filtrování 2 --since, --after commity po tomto datu Konkrétní datum --since="2008-01-15" Relativní --since="2 years 1 day 3 minutes ago" --until, --before commity před tímto datem --committer --author $ git log --author="linus Torvalds" --pretty="%ar - %s" -- README 8 years ago - Update README to reflect the hierarchical tree objects, and other newfangled things like merging. 8 years ago - Rename ".dircache" directory to ".git" 8 years ago - Initial revision of "git", the information manager from hell

Procházení historie - GUI gitk platí pro něj stejná pravidla jako pro git log

Tagy git tag seznam tagů v abecedním pořadí Filtrace pomocí parametru -l 2 typy tagů Lightweight tag Podobný jako branch, který se nemění - pouze ukazatel na konkrétní commit Vytvoření git tag <tagname> Annotated tag Uloženy jako plné objekty v Git databázi Obsahují jméno a email autora tagu, datum, zprávu a mohou být podepsány (a zkontrolovány) pomocí GPG (GNU Privacy Guard) Doporučeno používat tento typ, kde jsou obsaženy veškeré informace Vytvoření git tag a <tagname> [-m <msg>]

Tagy 2 git show <tagname> - informace o tagu a commitu git tag d <tagname> - smazání tagu Obdobně jako u branches git push implicitně nepřenáší tagy Explicitní přenos tagu pomocí - git push origin <tagname> Automatický přenos tagů - git push origin --tags

Rebase 2 způsoby jak začlenit změny z jedné větve do druhé merge a rebase Merge Three-way merge mezi C3 a C4 a jejich posledním předkem (C2) Rebase Vezme patch změn z C3 a aplikuje je na C4 Obrázky převzaty z Git Book (http://git-scm.com/book/)

Rebase Princip $ git checkout experiment $ git rebase master First, rewinding head to replay your work on top of it... Applying: added staged command Jde se do společného předka dvou větví. Vezme se diff každého commitu z větve, na které jsme. Uložení diffů do dočasných souborů. Přepnutí na větev, do které provádíme rebase. Postupná aplikace každé změny.

Rebase Princip 2 Vrácení se do větve, na kterou provádíme rebase, a provedení fast-forward merge (pouhé posunutí ukazatele). Výsledek C3 je stejný jako C5 vytvořený v merge příkladě. Výsledek je sice stejný, ale rebase vytváří čistčí historii. Při zkoumání rebased větve to vypadá jako lineární historie. Při přispívání do projektu nemusí správce provádět žádnou práci při začleňování, pouze fast-forward

Rebase Zajímavější příklad Merge client větve do master, ale zatím beze změn ze server větve. $ git rebase --onto master server client Zjistí patche ze společného předka větví client a server a potom je aplikuje na master větev. Posune master větev. $ git checkout master $ git merge client

Rebase Zajímavější příklad 2 Potom se rozhodneme začlenit také server větev. $ git rebase master server Posun master větve a smazání nepotřebných větví. $ git checkout master $ git merge server $ git branch -d client $ git branch -d server

Patch Vytvoření a poslání Přispívání do projektu pomocí patche git format-patch vytvoří patch soubory (mailbox format), které lze poslat na mailing list vývojářů Každý commit je samostatný soubor Přepínač M hledá i přejmenování Soubory lze poslat ručně přes email nebo pomocí git příkazu send-email git send-email *.patch

Patch Formát Vytvoření patche z větve, která vychází z master $ git format-patch master 0001-Modify-hello-message.patch $ cat 0001-Modify-hello-message.patch From 008f4de47cddcd6a12218d22ee5082e72ffa6a57 Mon Sep 17 00:00:00 2001 From: Milan Rybar <email@milanrybar.cz> Date: Tue, 6 Nov 2012 16:43:16 +0100 Subject: [PATCH] Modify hello message --- hello.c 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hello.c b/hello.c index f70a3a8..a8646ca 100644 --- a/hello.c +++ b/hello.c @@ -2,6 +2,6 @@ int main(int argc, char ** argv) { -print("hello World"); +print("hello Heaven"); return 0;...

Patch Aplikování Integrace v nové větvi, kde se nejdříve otestuje správnost 2 možnosti integrace git apply Integrace patche vytvořeného pomocí git diff nebo diff Podobné přikazu patch, ale git apply aplikuje vše nebo nic Formát vygenerovaný pomocí git diff navíc popisuje vytvořené, smazané a přejmenované soubory git apply --check - kontrola jestli se podaří patch aplikovat git am Patch vygenerován pomocí git format-patch, jednoduší integrace, protože patch obsahuje informace o autorovi a commit zprávu Čte mbox soubory plain-text formát pro uložení více emailových zpráv do jednoho textového souboru

Patch git am - Konflikty Mohou nastat konflikty Hlavní větev se hodně změnila oproti větvi, z které je patch vyroben Patch závisí na jiném patchi, který ješte nebyl aplikován $ git am 0001-seeing-if-this-helps-the-gem.patch Applying: seeing if this helps the gem error: patch failed: ticgit.gemspec:1 error: ticgit.gemspec: patch does not apply Patch failed at 0001. When you have resolved this problem run "git am --resolved". If you would prefer to skip this patch, instead run "git am --skip". To restore the original branch and stop patching run "git am --abort".

Zdroje Git Book - http://git-scm.com/book/

Děkuji za pozornost