Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00165 013880 11052135 na godz. na dobę w sumie
Git. Leksykon kieszonkowy - książka
Git. Leksykon kieszonkowy - książka
Autor: Liczba stron: 208
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-8313-0 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> inne - programowanie
Porównaj ceny (książka, ebook, audiobook).

Podręczny przewodnik po Git!

Jeszcze do niedawna wśród systemów kontroli wersję fotel lidera zajmował SVN. Jednak ta sytuacja w ostatnich latach ulega diametralnej zmianie. Rynek systemów kontroli wersji opanowały systemy rozproszone, z Gitem na czele. Czemu zdobyły taką popularność? Dzięki zastosowaniu Gita każdy programista dysponuje swoją lokalną, kompletną kopią całego repozytorium. Pozwala to na błyskawiczne wykonywanie typowych zadań i korzystanie z możliwości kontroli wersji bez wpływu na repozytoria innych osób. Aż do momentu, gdy stwierdzisz, że chcesz podzielić się efektami pracy z innymi.

Brzmi interesująco? Jeśli chciałbyś zgłębić system Git, trafiłeś na doskonałą książkę. Dzięki jej niewielkim rozmiarom możesz mieć ją zawsze przy sobie. Zmiana SVN na Git oprócz poznania nowych pojęć wymaga zmiany sposobu myślenia. Ten leksykon pozwoli Ci w każdej chwili sprawdzić, jak stworzyć nowe repozytorium czy gałąź oraz jak wprowadzić zmiany i przesłać je na centralny serwer. Ponadto dowiesz się, jak śledzić zdalne repozytoria, przeglądać historię zmian i scalać wersje. To doskonała lektura dla wszystkich osób chcących błyskawicznie poznać możliwości Gita i zacząć stosować go w codziennej pracy.

Dzięki tej książce:

Poznaj rozproszony system kontroli wersji!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Git Pocket Guide Tłumaczenie: Przemysław Szeremiota (wstęp, rozdz. 2 – 14); Beata Błaszczyk (rozdz. 1) ISBN: 978-83-246-8313-0 © 2014 Helion S.A. Authorized Polish translation of the English edition of Git Pocket Guide, ISBN 9781449325862 © 2013 Richard E. Silverman. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/gitlek Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:316)ci Wst(cid:253)p Rozdzia(cid:293) 1. Czym jest Git? Wprowadzenie Magazyn obiektów Identyfikator i skrót SHA-1 obiektu Gdzie znajduj(cid:241) si(cid:246) obiekty? Graf zmian Odniesienia Ga(cid:228)(cid:246)zie Indeks Scalanie Wypychanie i wci(cid:241)ganie zmian Rozdzia(cid:293) 2. Zaczynamy Konfiguracja podstawowa Tworzenie nowego pustego repozytorium Importowanie istniej(cid:241)cego projektu Wykluczanie plików Rozdzia(cid:293) 3. Zatwierdzanie zmian Modyfikacje indeksu Zatwierdzanie zmiany Rozdzia(cid:293) 4. Wycofywanie i modyfikowanie zatwierdzonych zmian Modyfikowanie ostatnio zatwierdzonej zmiany Porzucanie ostatnio zatwierdzonej zmiany Wycofywanie zmiany Edytowanie sekwencji zmian 7 13 13 18 23 27 28 29 30 33 35 37 43 43 49 51 52 55 55 60 64 65 68 69 71 3 Kup książkęPoleć książkę Rozdzia(cid:293) 5. Praca z ga(cid:293)(cid:253)ziami Ga(cid:228)(cid:241)(cid:274) g(cid:228)ówna — master Tworzenie nowej ga(cid:228)(cid:246)zi Prze(cid:228)(cid:241)czanie mi(cid:246)dzy ga(cid:228)(cid:246)ziami Usuwanie ga(cid:228)(cid:246)zi Zmiana nazwy ga(cid:228)(cid:246)zi Rozdzia(cid:293) 6. (cid:315)ledzenie zdalnych repozytoriów Klonowanie repozytorium Ga(cid:228)(cid:246)zie lokalne, zdalne i (cid:264)ledz(cid:241)ce Synchronizacja — wci(cid:241)ganie i wypychanie Kontrola dost(cid:246)pu Rozdzia(cid:293) 7. Scalanie Konflikty scalania Scalanie w szczegó(cid:228)ach Narz(cid:246)dzia do scalania zawarto(cid:264)ci W(cid:228)asne narz(cid:246)dzia scalaj(cid:241)ce Strategie scalania Dlaczego o(cid:264)miornica? Scalanie na bazie poprzednich decyzji Rozdzia(cid:293) 8. Wyra(cid:348)enia adresuj(cid:233)ce Adresowanie pojedynczych zmian Adresowanie zbiorów zmian Rozdzia(cid:293) 9. Przegl(cid:233)danie historii zmian Format polecenia Formaty wyj(cid:264)ciowe Definiowanie w(cid:228)asnych formatów Ograniczanie listy zmian do wypisania Wyra(cid:276)enia regularne Rejestr odniesie(cid:254) Uzupe(cid:228)nienie odniesieniami Format daty Listy zmodyfikowanych plików Wykrywanie zmian nazw i kopiowania plików Przepisywanie nazwisk i adresów 4 (cid:95) Spis tre(cid:316)ci 75 76 76 78 80 83 84 84 89 90 98 100 103 109 111 112 113 115 116 117 117 125 128 128 129 131 132 134 134 134 135 136 137 139 Kup książkęPoleć książkę Wyszukiwanie zmian Pokazywanie plików ró(cid:276)nicowych Kolorowanie ró(cid:276)nic Pokazywanie ró(cid:276)nic wyrazowych Porównywanie ga(cid:228)(cid:246)zi Pokazywanie notek Kolejno(cid:264)(cid:232) prezentacji zmian Upraszczanie historii Polecenia powi(cid:241)zane Rozdzia(cid:293) 10. Modyfikowanie historii zmian Zmiana bazy Importowanie zawarto(cid:264)ci z innego repozytorium Skalpel — polecenie git replace M(cid:228)ot — polecenie git filter-branch Uwagi Rozdzia(cid:293) 11. Pliki ró(cid:348)nicowe Aplikowanie plików ró(cid:276)nicowych (cid:227)aty z informacjami o zmianach Rozdzia(cid:293) 12. Dost(cid:253)p zdalny SSH HTTP Zapisywanie nazwy u(cid:276)ytkownika Zapisywanie has(cid:228)a Informacje dodatkowe Rozdzia(cid:293) 13. Ró(cid:348)ne git cherry-pick git notes git grep git rev-parse git clean git stash git show git tag git diff 141 142 142 142 143 145 145 146 146 149 149 153 158 161 164 165 167 168 170 170 173 173 173 175 176 176 177 179 181 182 183 185 186 188 Spis tre(cid:316)ci (cid:95) 5 Kup książkęPoleć książkę 190 191 192 192 194 194 195 195 195 195 196 196 196 196 197 197 197 197 198 198 198 199 199 199 199 201 git instaweb Wtyczki Narz(cid:246)dzia do wizualizacji stanu repozytorium Modu(cid:228)y zewn(cid:246)trzne Rozdzia(cid:293) 14. Jak… …u(cid:276)ywa(cid:232) centralnego repozytorium? …skorygowa(cid:232) ostatnio zatwierdzon(cid:241) zmian(cid:246)? …skorygowa(cid:232) n ostatnio zatwierdzonych zmian? …wycofa(cid:232) n ostatnio zatwierdzonych zmian? …wykorzysta(cid:232) opis z innej zmiany? …na(cid:228)o(cid:276)y(cid:232) pojedyncz(cid:241) zmian(cid:246) na inn(cid:241) ga(cid:228)(cid:241)(cid:274)? …wypisa(cid:232) list(cid:246) plików w konflikcie podczas scalania? …uzyska(cid:232) zestawienie ga(cid:228)(cid:246)zi? …uzyska(cid:232) dane o stanie drzewa roboczego i indeksu? …wpisa(cid:232) do indeksu wszystkie bie(cid:276)(cid:241)ce modyfikacje plików drzewa roboczego? …pokaza(cid:232) bie(cid:276)(cid:241)ce modyfikacje plików drzewa roboczego? …zachowa(cid:232) i przywróci(cid:232) bie(cid:276)(cid:241)ce modyfikacje drzewa roboczego i indeksu? …utworzy(cid:232) ga(cid:228)(cid:241)(cid:274) bez prze(cid:228)(cid:241)czania si(cid:246) na ni(cid:241)? …wypisa(cid:232) pliki zmodyfikowane wybran(cid:241) zmian(cid:241)? …pokaza(cid:232) modyfikacje wprowadzone przez zmian(cid:246)? …uzyska(cid:232) dope(cid:228)nianie nazw ga(cid:228)(cid:246)zi, etykiet itp.? …wypisa(cid:232) wszystkie repozytoria zdalne? …zmieni(cid:232) adres URL repozytorium zdalnego? …usun(cid:241)(cid:232) stare ga(cid:228)(cid:246)zie (cid:264)ledz(cid:241)ce nieistniej(cid:241)ce ju(cid:276) ga(cid:228)(cid:246)zie pochodzenia? …u(cid:276)y(cid:232) polecenia git log… Skorowidz 6 (cid:95) Spis tre(cid:316)ci Kup książkęPoleć książkę Rozdzia(cid:293) 2. Zaczynamy W tym rozdziale zaczniemy prac(cid:246) z Gitem od ustawienia preferencji konfiguracji, a tak(cid:276)e zapoznamy si(cid:246) z podstawami operacji tworzenia nowego repozytorium i zape(cid:228)niania go zawarto(cid:264)ci(cid:241). Konfiguracja podstawowa Zanim zaczniemy, powinni(cid:264)my za pomoc(cid:241) polecenia git config usta- wi(cid:232) kilka najwa(cid:276)niejszych parametrów konfiguracyjnych. Polecenie to s(cid:228)u(cid:276)y do wczytywania i modyfikacji ustawie(cid:254) Gita na poziomie pojedynczego repozytorium, na poziomie globalnym (wszystkie re- pozytoria u(cid:276)ytkownika) u(cid:276)ytkownika albo na poziomie systemowym. Osobista konfiguracja u(cid:276)ytkownika jest przechowywana w pliku ~/.gitconfig; jest to zwyczajny plik tekstowy, który mo(cid:276)na równie(cid:276) mo- dyfikowa(cid:232) bezpo(cid:264)rednio. Jego format to tak zwany styl INI (od roz- szerzenia typowego dla licznych plików konfiguracyjnych; Git takiego rozszerzenia nie u(cid:276)ywa), z wydzielonymi sekcjami, jak tutaj: [user] name = Richard E. Silverman [color] ui = auto # ogólna warto(cid:286)(cid:252) domy(cid:286)lna opcji kolorowania interfejsu [mergetool ediff ] trustExitCode = true Komentarze s(cid:241) oznaczane znakiem # (to równie(cid:276) konwencja typowa dla uniksowych plików konfiguracyjnych). Poszczególne parametry reprezentowane s(cid:241) nazwami kwalifikowanymi nazw(cid:241) sekcji, w której wyst(cid:246)puj(cid:241); kwalifikatorem jest znak kropki. Na przyk(cid:228)ad parametry widoczne w powy(cid:276)szym przyk(cid:228)adzie s(cid:241) widziane jako: (cid:120) user.name (cid:120) color.ui (cid:120) mergetool.ediff.trustExitCode Takimi nazwami b(cid:246)dziemy si(cid:246) pos(cid:228)ugiwa(cid:232) za po(cid:264)rednictwem programu git config. Ustawienie warto(cid:264)ci parametru sprowadza si(cid:246) do wydania polecenia: $ git config --{local,global,system} parametr warto(cid:258)(cid:202) Rozdzia(cid:293) 2. Zaczynamy (cid:95) 43 Kup książkęPoleć książkę Wydanie polecenia zmiany konfiguracji w katalogu znajduj(cid:241)cym si(cid:246) we- wn(cid:241)trz repozytorium Git oznacza domniemanie obecno(cid:264)ci opcji --local, a wi(cid:246)c zmiana dotyczy tylko tego repozytorium; taka zmiana zostanie utrwalona w lokalnym pliku konfiguracyjnym .git/config. W innych przy- padkach domy(cid:264)lny poziom zmiany konfiguracji to poziom globalny (--global), a zmiana jest utrwalana w g(cid:228)ównym pliku konfiguracji Gita ~/.gitconfig. Opcja --system zmienia konfiguracj(cid:246) Gita dla ca(cid:228)ego systemu, a wi(cid:246)c dotyczy wszystkich u(cid:276)ytkowników. Ustawienia tego poziomu mog(cid:241) by(cid:232) utrwalane w ró(cid:276)nych lokalizacjach, ale zazwyczaj jest to plik /etc/gitconfig. Pliki w katalogu /etc s(cid:241) przewa(cid:276)nie chronione przed zapi- sem przez zwyczajnych u(cid:276)ytkowników systemu, wi(cid:246)c wykonanie pole- cenia zmiany konfiguracji na poziomie systemowym wymaga na ogó(cid:228) uprawnie(cid:254) administracyjnych. Takie systemowe zmiany najcz(cid:246)(cid:264)ciej wprowadza si(cid:246) inaczej, to znaczy z poziomu specjalizowanych sys- temów konfiguracji i zarz(cid:241)dzania, jak Puppet (https://puppetlabs.com/) czy Chef (http://www.opscode.com/chef/). Git wczytuje ustawienia konfiguracji wszystkich poziomów w kolejno(cid:264)ci: ustawienia systemowe, ustawienia globalne u(cid:276)ytkownika, ustawienia repozytorium. Parametry konfiguracyjne definiowane w plikach ni(cid:276)szego poziomu nadpisuj(cid:241) ustawienia ogólniejsze, co pozwala na ustawienie globalnego adresu e-mail autora (z opcj(cid:241) --global) z mo(cid:276)liwo(cid:264)ci(cid:241) wy- biórczego zmieniania tego ustawienia w poszczególnych repozytoriach (je(cid:264)li zachodzi taka potrzeba, to znaczy, je(cid:264)li na przyk(cid:228)ad dane repozyto- rium jest repozytorium projektu z pracy, a inne to repozytoria projek- tów domowych). Parametry o warto(cid:264)ciach logicznych (tak/nie) mog(cid:241) przyjmowa(cid:232) warto(cid:264)ci yes/no, true/false oraz on/off. Wi(cid:246)cej informacji o formacie plików konfiguracyjnych i znaczeniu licz- nych parametrów (nie wszystkie zostan(cid:241) wymienione w tek(cid:264)cie), a tak(cid:276)e informacje na temat innych zastosowa(cid:254) polecenia git config, jak od- czytywanie bie(cid:276)(cid:241)cych warto(cid:264)ci parametrów, mo(cid:276)na znale(cid:274)(cid:232) w doku- mentacji git-config(1). Identyfikacja autora Git b(cid:246)dzie próbowa(cid:228) odgadn(cid:241)(cid:232) nazw(cid:246) i adres e-mail ze zmiennych i ustawie(cid:254) (cid:264)rodowiskowych (systemowych), ale poniewa(cid:276) w ró(cid:276)nych systemach s(cid:241) one ró(cid:276)nie reprezentowane, najlepiej ustawi(cid:232) je jawnie: $ git config --global user.name Richard E. Silverman $ git config --global user.email res@oreilly.com 44 (cid:95) Git. Leksykon kieszonkowy Kup książkęPoleć książkę Je(cid:264)li zamierzamy wykorzystywa(cid:232) identyczne ustawienia pliku ~/.gitconfig na wielu komputerach (na przyk(cid:228)ad w domu i w pracy), powielanie warto(cid:264)ci parametrów przestanie by(cid:232) wygodne. Mo(cid:276)na jednak wyko- rzysta(cid:232) fakt, (cid:276)e wobec braku jawnej konfiguracji Git w pierwszej ko- lejno(cid:264)ci b(cid:246)dzie szuka(cid:228) nazwy i adresu e-mail autora w zmiennej (cid:264)ro- dowiskowej EMAIL, mo(cid:276)na wi(cid:246)c pokusi(cid:232) si(cid:246) o uzgodnienie warto(cid:264)ci tej zmiennej (cid:264)rodowiskowej w ró(cid:276)nych u(cid:276)ywanych systemach (np. poprzez wymuszenie jej ustawienia w plikach startowych w rodzaju .bashrc, .profile, .cshrc itp.). Git uwzgl(cid:246)dnia te(cid:276) zmienne bardziej szczegó(cid:228)owe, jak GIT_AUTHOR_NAME czy GIT_COMMITTER_EMAIL; jak wida(cid:232), z punktu widzenia Gita autor zmiany niekoniecznie musi by(cid:232) t(cid:241) sam(cid:241) osob(cid:241), która wprowadza zmian(cid:246) do repozytorium. Wi(cid:246)cej informacji o ustawieniach (cid:264)rodowiskowych mo(cid:276)na znale(cid:274)(cid:232) w dokumentacji git- -commit-tree(1) oraz w podrozdziale „Definiowanie w(cid:228)asnych formatów”. Edytor tekstu Polecenie git commit wymaga udost(cid:246)pnienia tekstu s(cid:228)u(cid:276)(cid:241)cego potem jako komentarz do zmiany (tzw. commit message). Ów komentarz mo(cid:276)na dostarczy(cid:232) jako argument wywo(cid:228)ania polecenia (opcja -m), mo(cid:276)na jed- nak równie(cid:276) wskaza(cid:232) swój ulubiony edytor tekstu, który b(cid:246)dzie auto- matycznie uruchamiany w celu edycji komentarza — je(cid:264)li w poleceniu zabraknie opcji -m, Git uruchomi wskazany edytor tekstu i pozwoli w nim zapisa(cid:232) komentarz, a potem sam odczyta utworzony plik i do(cid:228)(cid:241)- czy komentarz do zmiany. Domy(cid:264)lny edytor mo(cid:276)e by(cid:232) ró(cid:276)ny w ró(cid:276)nych systemach; w Uniksach jest nim powszechnie dost(cid:246)pny vi. Ustawienie to mo(cid:276)na zmieni(cid:232) za po(cid:264)rednictwem zmiennych (cid:264)rodowiskowych GIT_EDITOR, EDITOR b(cid:241)d(cid:274) VISUAL (te dwie ostatnie s(cid:241) respektowane równie(cid:276) przez inne polecenia systemów uniksowych) albo przez jawne nadanie warto(cid:264)ci parametrowi konfiguracyjnemu core.editor. Oto przyk(cid:228)ad (uwzgl(cid:246)dniaj(cid:241)cy osobiste odchylenie autora): $ git config --global core.editor emacs Obowi(cid:241)zuj(cid:241)ca dla Gita jest pierwsza znaleziona warto(cid:264)(cid:232) przy za(cid:228)o(cid:276)eniu wyszukiwania najpierw w plikach konfiguracyjnych, a potem w(cid:264)ród wymienionych zmiennych systemowych. Skracanie identyfikatora zmiany Kiedy odnosimy si(cid:246) bezpo(cid:264)rednio do identyfikatora obiektu repozyto- rium, powo(cid:228)ywanie si(cid:246) na pe(cid:228)ny 40-znakowy skrót SHA-1 jest zazwyczaj nadmiarowe; wystarczy, je(cid:264)li podamy dowolnie d(cid:228)ugi podci(cid:241)g skrótu, Rozdzia(cid:293) 2. Zaczynamy (cid:95) 45 Kup książkęPoleć książkę byleby jednoznacznie identyfikowa(cid:228) obiekt w bie(cid:276)(cid:241)cym kontek(cid:264)cie. Skoro tak, mo(cid:276)emy za(cid:276)yczy(cid:232) sobie od Gita skracania identyfikatorów zmian za pomoc(cid:241) nast(cid:246)puj(cid:241)cych ustawie(cid:254): $ git config --global log.abbrevCommit yes $ git config --global core.abbrev 8 Owocuje to wydatnym zwi(cid:246)kszeniem czytelno(cid:264)ci rozmaitych komu- nikatów systemu Git, zw(cid:228)aszcza w wyniku polecenia git log, prezentu- j(cid:241)cego rejestr zmian: $ git log --pretty=oneline 222433ee Update draft release notes to 1.7.10 2fa91bd3 Merge branch maint 70eb1307 Documentation: do not assume that n - 1 in ... ... Gdyby nie skracanie identyfikatorów, komentarze do zmian zosta(cid:228)yby wypisane mocno na prawo, za d(cid:228)ugimi i zupe(cid:228)nie nieczytelnymi identy- fikatorami. Parametr core.abbrev okre(cid:264)la rozmiar skróconego identyfikato- ra w znakach; domy(cid:264)lnie (w wi(cid:246)kszo(cid:264)ci przypadków) rozmiar ten wy- nosi 7. Ustawienie stosowania skróconych identyfikatorów nie eliminuje mo(cid:276)liwo(cid:264)ci pos(cid:228)ugiwania si(cid:246) identyfikatorami pe(cid:228)nymi. Kiedy zachodzi taka potrzeba, polecenia Gita mo(cid:276)na uzupe(cid:228)ni(cid:232) opcj(cid:241) --no-abbrev-commit. Warto przy tym wzi(cid:241)(cid:232) pod uwag(cid:246), (cid:276)e w przypadku powo(cid:228)ywania si(cid:246) na identyfikatory zmian w kontek(cid:264)cie publicznym nale(cid:276)a(cid:228)oby jednak pos(cid:228)ugiwa(cid:232) si(cid:246) identyfikatorami pe(cid:228)nymi, bo to wyeliminuje ryzyko ewentualnej kolizji. Stronicowanie Wyj(cid:264)cie wielu polece(cid:254) Gita (jak git log czy git status) b(cid:246)dzie automa- tycznie przekazywane potokiem do polecenia less(1) w celu podzie- lenia tekstu wyj(cid:264)ciowego na strony; plik konfiguracyjny pozwala na wskazanie innego programu stronicuj(cid:241)cego za po(cid:264)rednictwem para- metru core.pager (ustawienie to mo(cid:276)na te(cid:276) wymusi(cid:232) przy u(cid:276)yciu zmien- nej (cid:264)rodowiskowej GIT_PAGER); w ten sposób mo(cid:276)na nawet zupe(cid:228)nie zrezygnowa(cid:232) ze stronicowania (wystarczy jako program stronicuj(cid:241)cy poda(cid:232) cat). Stronicowaniem mo(cid:276)na te(cid:276) sterowa(cid:232) w zale(cid:276)no(cid:264)ci od polecenia — za po(cid:264)rednictwem parametru pager.polecenie. Na przy- k(cid:228)ad parametr konfiguracyjny pager.status ustawi (albo wy(cid:228)(cid:241)czy) pro- gram stronicuj(cid:241)cy obs(cid:228)uguj(cid:241)cy wyj(cid:264)cie polecenia git status. Odsy(cid:228)am tutaj równie(cid:276) do dokumentacji polecenia git config(1) w cz(cid:246)(cid:264)ci po(cid:264)wi(cid:246)- conej parametrowi core.pager, gdzie omawiane s(cid:241) równie(cid:276) ró(cid:276)ne aspekty 46 (cid:95) Git. Leksykon kieszonkowy Kup książkęPoleć książkę uwzgl(cid:246)dniania warto(cid:264)ci zmiennej (cid:264)rodowiskowej LESS, modyfikuj(cid:241)cej zachowanie domy(cid:264)lnego programu stronicuj(cid:241)cego. Kolory Wiele polece(cid:254) Gita, jak diff, log czy branch, mo(cid:276)e kolorowa(cid:232) generowane komunikaty, co bardzo u(cid:228)atwia ich interpretacj(cid:246); opcje kolorowania wyj- (cid:264)cia s(cid:241) jednak zazwyczaj domy(cid:264)lnie wy(cid:228)(cid:241)czone. Aby w(cid:228)(cid:241)czy(cid:232) obs(cid:228)ug(cid:246) kolorowania wyj(cid:264)cia, nale(cid:276)y przestawi(cid:232) parametr color.ui: $ git config --global color.ui auto (ui to skrót od user interface — interfejs u(cid:276)ytkownika). To ustawienie w(cid:228)(cid:241)czy wi(cid:246)kszo(cid:264)(cid:232) opcji kolorowania wyj(cid:264)cia w przypadkach, kiedy wyj(cid:264)cie Gita b(cid:246)dzie kierowane na terminal tekstowy (urz(cid:241)dzenie tty/pty). Kolorowanie mo(cid:276)na te(cid:276) ustawia(cid:232) niezale(cid:276)nie dla poszczególnych pole- ce(cid:254) Gita, na przyk(cid:228)ad wy(cid:228)(cid:241)czy(cid:232) je dla polecenia git btanch: $ git config --global color.branch no Obs(cid:228)uga kolorowania w Gicie jest bardzo silnie konfigurowalna, od de- finiowania nowych nazw kolorów, przez okre(cid:264)lanie sekwencji steru- j(cid:241)cych wymuszaj(cid:241)cych zmian(cid:246) koloru czcionki terminalu, po definio- wanie kolorów we w(cid:228)asnych formatach logów; szczegó(cid:228)y mo(cid:276)na znale(cid:274)(cid:232) w dokumentacji polece(cid:254) git-config(1) i git-log(1). Klucze kryptograficzne Git potrafi wykorzystywa(cid:232) system GnuPG (http://www.gnupg.org/) w celu kryptograficznego podpisywania etykiet i zmian, co pozwala na weryfi- kowanie istotnych za(cid:228)o(cid:276)e(cid:254) dotycz(cid:241)cych autentyczno(cid:264)ci zawarto(cid:264)ci, np. „Ta zmiana zawiera kod (cid:274)ród(cid:228)owy w wersji 3.0”. O podpisywaniu ety- kiet b(cid:246)dzie mowa w podrozdziale „git tag”. W konfiguracji domy(cid:264)lnej wybór klucza stosowanego przy podpisywaniu polega na przekazaniu nazwy i adresu e-mail autora; je(cid:264)li dana kombinacja ustawie(cid:254) Gita i GnuPG nie owocuje wybraniem w(cid:228)a(cid:264)ciwego klucza, mo(cid:276)na go usta- wi(cid:232) jawnie poleceniem: $ git config --global user.signingkey 6B4FB2D0 Dopuszczalne jest u(cid:276)ycie dowolnego identyfikatora klucza obs(cid:228)ugiwa- nego przez GnuPG; u(cid:276)yty tu 6B4FB2D0 to identyfikator klucza osobistego autora. Mo(cid:276)na równie(cid:276) wskaza(cid:232) dowolny z adresów e-mail powi(cid:241)za- nych z danym kluczem, je(cid:264)li tylko jest on unikatowy w(cid:264)ród kluczy. Rozdzia(cid:293) 2. Zaczynamy (cid:95) 47 Kup książkęPoleć książkę Aliasy polece(cid:295) W wi(cid:246)kszo(cid:264)ci systemów istnieje metoda skracania zapisu d(cid:228)ugich pole- ce(cid:254) do postaci aliasów, na przyk(cid:228)ad w systemach uniksowych odbywa si(cid:246) to za po(cid:264)rednictwem polece(cid:254) alias umieszczanych w skryptach startowych (.bashrc i podobnych). Git posiada w(cid:228)asny wewn(cid:246)trzny system aliasowania polece(cid:254), który czasem okazuje si(cid:246) wygodniejszy. Polecenie: $ git config --global alias.cp cherry-pick definiuje git cp jako alias dla polecenia git cherry-pick. W definicji aliasu mo(cid:276)liwe jest u(cid:276)ycie znaku wykrzyknika, co oznacza, (cid:276)e definicja ma by(cid:232) przekazana do pow(cid:228)oki (która mo(cid:276)e rozwin(cid:241)(cid:232) alias do bardziej rozbudowanej postaci). Na przyk(cid:228)ad poni(cid:276)sza definicja, umieszczona w pliku ~/.gitconfig: [alias] setup = ! git init; git add .; git commit definiuje alias o nazwie git setup, którego rozwini(cid:246)cie w pow(cid:228)oce ozna- cza wykonanie polece(cid:254) tworz(cid:241)cych nowe repozytorium z zawarto(cid:264)ci(cid:241) z bie(cid:276)(cid:241)cego katalogu roboczego. Ogólnie rzecz bior(cid:241)c, za ka(cid:276)dym razem, kiedy wpisujemy git co(cid:258)tam, to je(cid:264)li co(cid:258)tam nie jest wbudowanym poleceniem albo aliasem Gita, Git przeszuka jego w(cid:228)asny katalog instalacyjny (zazwyczaj /usr/lib/git-core), a nast(cid:246)pnie (cid:264)cie(cid:276)k(cid:246) programów wykonywalnych w poszukiwaniu pro- gramu o nazwie git-co(cid:258)tam. Oznacza to, (cid:276)e mo(cid:276)emy stworzy(cid:232) w(cid:228)asne polecenie Gita git foo przez umieszczenie skryptu albo programu wykonywalnego w katalogu wchodz(cid:241)cym w sk(cid:228)ad (cid:264)cie(cid:276)ki programów wykonywalnych (definiowanej zazwyczaj zmienn(cid:241) (cid:264)rodowiskow(cid:241) PATH). Pomoc Git udost(cid:246)pnia pomoc dotycz(cid:241)c(cid:241) swoich polece(cid:254) i opcji, na przyk(cid:228)ad: $ git help commit Powy(cid:276)sze polecenie spowoduje wy(cid:264)wietlenie dokumentacji polecenia git commit. W systemach uniksowych dokumentacja ta jest dost(cid:246)pna równie(cid:276) za po(cid:264)rednictwem systemu stron dokumentacji systemowej man, a wi(cid:246)c mo(cid:276)na j(cid:241) wywo(cid:228)a(cid:232) poleceniem: $ man git-commit 48 (cid:95) Git. Leksykon kieszonkowy Kup książkęPoleć książkę Zobacz równie(cid:348) (cid:120) git-init(1) (cid:120) git-commit-tree(1) (cid:120) git-config(1) (cid:120) git-log(1) [ Pretty Formats ] Tworzenie nowego pustego repozytorium Polecenie: $ git init katalog tworzy wskazany katalog (je(cid:264)li nie istnieje), a w nim katalog o nazwie .git, w którym Git przechowuje nowe, puste repozytorium. Poza katalo- giem .git katalog katalog b(cid:246)dzie przechowywa(cid:228) równie(cid:276) drzewo robocze (ang. working tree), to znaczy kopie plików i katalogów obj(cid:246)tych kontrol(cid:241) wersji. Katalog .git przechowuje pliki i struktury danych repozytorium jako takiego, z baz(cid:241) danych wszystkich historycznych wersji wszystkich plików danego projektu. W przeciwie(cid:254)stwie do CVS oraz (do niedawna) Subversion drzewo robocze nie zawiera podkatalogów repozytorium na ka(cid:276)dym poziomie drzewa (w CVS by(cid:228)y to katalogi CVS, w Subversion — .svn); ca(cid:228)e repozytorium jest reprezentowane pojedynczym katalo- giem .git w g(cid:228)ównym katalogu drzewa roboczego. Je(cid:264)li polecenie zostanie wywo(cid:228)ane bez parametru, Git utworzy nowe repozytorium w bie(cid:276)(cid:241)cym katalogu roboczym. Polecenie git init jest poleceniem bezpiecznym — nie usuwa (cid:276)ad- nych plików ze wskazanego katalogu (zazwyczaj schemat dzia(cid:228)ania polega na tym, (cid:276)e ju(cid:276) znajduj(cid:241)ce si(cid:246) tam pliki b(cid:246)d(cid:241) dodawane do nowego repozytorium). Polecenie to nie uszkodzi te(cid:276) ju(cid:276) istniej(cid:241)cego repozytorium, nawet je(cid:264)li wynikiem polecenia b(cid:246)dzie gro(cid:274)ny komu- nikat o ponownej inicjalizacji; jedyne wykonywane operacje s(cid:241) w istocie czynno(cid:264)ciami administracyjnymi, jak wybór nowych szablonów dla skryptów udost(cid:246)pnianych przez administratora systemu (patrz podroz- dzia(cid:228) „Wtyczki). Rozdzia(cid:293) 2. Zaczynamy (cid:95) 49 Kup książkęPoleć książkę Opcje --bare Tworzy repozytorium „minimalne”, to znaczy repozytorium nie- powi(cid:241)zane z drzewem roboczym. Wewn(cid:246)trzne pliki repozytorium, które normalnie znajdowa(cid:228)yby si(cid:246) w podkatalogu .git wewn(cid:241)trz wskazanego katalogu, zostan(cid:241) utworzone wprost w tym katalogu, a do tego Git ustawi dla repozytorium zestaw opcji, przede wszystkim core.bare = yes. Minimalne repozytorium s(cid:228)u(cid:276)y za- zwyczaj jako punkt koordynacji w scentralizowanym modelu koordynacji zmian, w którym wiele osób wypycha i wci(cid:241)ga zmiany z i do repozytorium centralnego, zamiast wymienia(cid:232) je wprost mi(cid:246)dzy sob(cid:241); nikt wtedy nie pracuje wprost na minimalnym (go(cid:228)ym) repozytorium. --shared Ustawia prawa dost(cid:246)pu do plików i inne uniksowe opcje pozwa- laj(cid:241)ce wielu osobom na korzystanie z tego samego (nieminimalne- go) repozytorium. Normalny schemat pracy zak(cid:228)ada, (cid:276)e je(cid:264)li kto(cid:264) zamierza przys(cid:228)a(cid:232) aktualizacj(cid:246) plików projektu, realizuje to w po- staci pro(cid:264)by o wyci(cid:241)gni(cid:246)cie zmian z jego repozytorium, dzi(cid:246)ki czemu pozostajemy jedyn(cid:241) osob(cid:241) modyfikuj(cid:241)c(cid:241) stan naszej kopii lokalnej. Ustawienia praw dost(cid:246)pu do plików repozytorium za- zwyczaj odzwierciedlaj(cid:241) ten model, wykluczaj(cid:241)c mo(cid:276)liwo(cid:264)(cid:232) mody- fikacji przez innych u(cid:276)ytkowników systemu. Opcja --shared prze- stawia uprawnienia tak, aby inni u(cid:276)ytkownicy równie(cid:276) mogli bezpo(cid:264)rednio wpycha(cid:232) swoje zmiany do wspólnego repozytorium (a tak(cid:276)e je z niego wyci(cid:241)ga(cid:232)). Opcja ta wi(cid:241)(cid:276)e si(cid:246) z kilkoma usta- wieniami odpowiadaj(cid:241)cymi uprawnieniom dost(cid:246)pu do plików, grupowej w(cid:228)asno(cid:264)ci plików, modyfikacji ustawienia umask itp.; po szczegó(cid:228)y odsy(cid:228)am do dokumentacji git-init(1). Opcja --shared nie jest wykorzystywana zbyt cz(cid:246)sto. Wspó(cid:228)pra- cownicy zazwyczaj ograniczaj(cid:241) si(cid:246) do wzajemnego wyci(cid:241)gania zmian ze swoich repozytoriów celem naniesienia ich na swoje w(cid:228)a- sne repozytoria, ewentualnie wypychaj(cid:241) zmiany do wspólnego repozytorium minimalnego. Wypychanie zmian do niepustego repozytorium idzie nieco w poprzek z za(cid:228)o(cid:276)eniami Gita, poniewa(cid:276) mo(cid:276)e (cid:228)atwo zako(cid:254)czy(cid:232) si(cid:246) niepowodzeniem, je(cid:264)li próbujemy wy- pchn(cid:241)(cid:232) ga(cid:228)(cid:241)(cid:274), która w repozytorium zdalnym jest aktualnie wy- ci(cid:241)gni(cid:246)ta (to oznacza(cid:228)oby przecie(cid:276) uniewa(cid:276)nienie drzewa roboczego i indeksu w repozytorium zdalnym). Repozytorium minimalne jest wolne od tego ryzyka, poniewa(cid:276) nie posiada drzewa roboczego 50 (cid:95) Git. Leksykon kieszonkowy Kup książkęPoleć książkę ani indeksu (a zatem i u(cid:276)ytkowników modyfikuj(cid:241)cych wprost lokaln(cid:241) kopi(cid:246)). Katalog .git Repozytorium jest zazwyczaj przechowywane w katalogu .git znaj- duj(cid:241)cym si(cid:246) w g(cid:228)ównym katalogu drzewa roboczego, ale mo(cid:276)na je umie(cid:264)ci(cid:232) w innej lokalizacji — wystarczy u(cid:276)y(cid:232) opcji --git-dir kata- log i jawnie wskaza(cid:232) alternatywn(cid:241) lokalizacj(cid:246) albo odpowiednio przestawi(cid:232) zmienn(cid:241) (cid:264)rodowiskow(cid:241) GIT_DIR. Dla uproszczenia omówienia i dla zachowania zgodno(cid:264)ci z typowym modelem pracy, kiedy b(cid:246)dzie mowa o katalogu repozytorium, b(cid:246)dzie to oznacza(cid:228)o katalog .git w katalogu drzewa roboczego. Importowanie istniej(cid:233)cego projektu Poni(cid:276)sze polecenia tworz(cid:241) nowe repozytorium w bie(cid:276)(cid:241)cym katalogu roboczym i dodaj(cid:241) do niego ca(cid:228)(cid:241) zawarto(cid:264)(cid:232) tego katalogu: $ git init $ git add . $ git commit -m Projekt Foo wystartowa(cid:239)! A po kolei wygl(cid:241)da to tak: $ cd hello $ ls -l total 12 -rw-r----- 1 res res 50 Mar 4 19:54 README -rw-r----- 1 res res 127 Mar 4 19:53 hello.c -rw-r----- 1 res res 27 Mar 4 19:53 hello.h $ git init Initialized empty Git repository in /u/res/hello/.git/ $ git add . $ git commit -m Projekt Foo wystartowa(cid:239)! [master (root-commit) cb9c236f] Projekt Foo wystartowa(cid:239)! 3 files changed, 13 insertions(+) create mode 100644 README create mode 100644 hello.c create mode 100644 hello.h Powy(cid:276)sza sekwencja tworzy nowe repozytorium Git w katalogu .git w bie(cid:276)(cid:241)cym katalogu roboczym oraz dodaje do niego zawarto(cid:264)(cid:232) ca(cid:228)ego drzewa katalogów osadzonego we wskazanym katalogu (tutaj jest to katalog bie(cid:276)(cid:241)cy .) jako pierwotn(cid:241) zmian(cid:246) w nowej ga(cid:228)(cid:246)zi o domy(cid:264)lnej nazwie master: $ git branch * master Rozdzia(cid:293) 2. Zaczynamy (cid:95) 51 Kup książkęPoleć książkę $ git log --stat commit cb9c236f Author: Richard E. Silverman res@oreilly.com Date: Sun Mar 4 19:57:45 2012 -0500 Projekt Foo wystartowa(cid:239)! README | 3 +++ hello.c | 7 +++++++ hello.h | 3 +++ 3 files changed, 13 insertions(+) W szczegó(cid:228)ach wygl(cid:241)da to tak: polecenie git add . dodaje do (pierwot- nie pustego) indeksu repozytorium ca(cid:228)(cid:241) zawarto(cid:264)(cid:232) bie(cid:276)(cid:241)cego katalogu (wraz z ewentualnymi podkatalogami, rekurencyjnie). Polecenie git commit tworzy nast(cid:246)pnie nowy obiekt drzewa repozytorium, ujmuj(cid:241)cy bie(cid:276)(cid:241)cy stan indeksu oraz obiekt zatwierdzenia zmiany z tekstem ko- mentarza i danymi autora, dat(cid:241) itp.; obiekt ten wskazuje do nowo utwo- rzonego obiektu drzewa. Polecenie to rejestruje oba obiekty w bazie da- nych obiektów repozytorium, a nast(cid:246)pnie ustawia ga(cid:228)(cid:241)(cid:274) master na nowo zatwierdzon(cid:241) zmian(cid:246); to znaczy ustawia odniesienie refs/heads/master jako wskazuj(cid:241)ce do identyfikatora nowej zmiany: $ git log --pretty=oneline cb9c236f Projekt Foo wystartowa(cid:239)! $ git show-ref master cb9c236f refs/heads/master Polecenie git log pokazuje identyfikator najnowszej (a obecnie jedynej) zmiany, a polecenie git show-ref master pokazuje identyfikator zmiany, do którego odwo(cid:228)uje si(cid:246) obecnie ga(cid:228)(cid:241)(cid:274) master; z powy(cid:276)szego wida(cid:232), (cid:276)e oba dotycz(cid:241) tej samej, (cid:264)wie(cid:276)o wprowadzonej zmiany. Wykluczanie plików Podczas pracy nad projektem zdarza si(cid:246), (cid:276)e w katalogu roboczym poja- wiaj(cid:241) si(cid:246) pliki, których nie chcemy umieszcza(cid:232) w repozytorium. W przy- padku mniejszych projektów, pisanych w j(cid:246)zykach interpretowanych, jest to sytuacja rzadsza, ale typowa w przypadku projektów w j(cid:246)zykach kompilowanych dowolnego rodzaju, a tak(cid:276)e tam, gdzie wykorzystywane s(cid:241) na przyk(cid:228)ad narz(cid:246)dzia automatycznego generowania konfiguracji czy dokumentacji. Do plików niepo(cid:276)(cid:241)danych w repozytorium zaliczymy: kod obiektowy: *.o, *.so, *.a, *.dll, *.exe kod bajtowy: *.jar (Java), *.elc (Emacs Lisp), *.pyc (Python) artefakty systemu kompilacji: config.log, config.status, aclocal.m4, Makefile.in, config.h 52 (cid:95) Git. Leksykon kieszonkowy Kup książkęPoleć książkę Ogólnie rzecz bior(cid:241)c, niepo(cid:276)(cid:241)dane jest wszystko, co generuje si(cid:246) au- tomatycznie, a wi(cid:246)c nie wymaga rewizji i wersjonowania w systemie Git, a ponadto wszystko, co za(cid:264)mieca(cid:228)oby wykazy zmienionych plików albo, co gorsza, wymaga(cid:228)oby niepotrzebnego scalania niezgodnych zmian. Git posiada funkcje wykluczania plików, bazuj(cid:241)c(cid:241) na trzech (cid:274)ród(cid:228)ach: 1. Plikach wymienionych w pliku .gitignore w drzewie roboczym. Plik .gitignore to dla Gita (z punktu widzenia zawarto(cid:264)ci) zwyczajny plik, to znaczy, je(cid:264)li nie zostanie dodany do repozytorium, nie b(cid:246)dzie w nim uj(cid:246)ty, ale mo(cid:276)na go doda(cid:232) do repozytorium, je(cid:264)li chcemy uzgodni(cid:232) zakres wykluczanych elementów projektu z in- nymi uczestnikami. Plik .gitignore mo(cid:276)na te(cid:276) wymieni(cid:232) w pliku .gitignore. Git wczytuje wszystkie pliki .gitignore w bie(cid:276)(cid:241)cym kata- logu i w podrz(cid:246)dnych katalogach repozytorium; zasad(cid:241) jest, (cid:276)e plik znajduj(cid:241)cy si(cid:246) najbli(cid:276)ej katalogu bie(cid:276)(cid:241)cego jest wa(cid:276)niejszy ni(cid:276) inne pliki .gitignore. 2. Plikach wymienionych w pliku .git/info/exclude. Jest to element kon- figuracji repozytorium, ale nie jego zawarto(cid:264)ci, wi(cid:246)c w przeciwie(cid:254)- stwie do plików .gitignore nie mo(cid:276)na go synchronizowa(cid:232) poprzez repozytorium. Jest to jednak wygodne miejsce do zdefiniowania takich plików, co do których wykluczania nie ma jeszcze konsen- susu; cz(cid:246)sto zreszt(cid:241) w projektach ustala si(cid:246) regu(cid:228)(cid:246) niestosowania plików .gitignore wewn(cid:241)trz repozytorium. 3. Plikach wymienionych w zmiennej konfiguracyjnej core.excludes (je(cid:264)li jest ustawiona). Mo(cid:276)na wi(cid:246)c wyda(cid:232) polecenie: $ git config --global core.excludesfile ~/.gitignore i trzyma(cid:232) list(cid:246) wzorców wykluczania plików w konfiguracji Gita (lokalnej, globalnej albo wr(cid:246)cz systemowej). Powy(cid:276)sze polecenie bazuje na za(cid:228)o(cid:276)eniu, (cid:276)e katalog domowy u(cid:276)ytkownika nie jest uj(cid:246)ty w repozytorium, bo w takim przypadku plik ze wzorcami plików wykluczanych trzeba by by(cid:228)o umie(cid:264)ci(cid:232) gdzie indziej, a poza tym wypada(cid:228)oby sobie postawi(cid:232) pytanie, czy z tym ca(cid:228)ym Gitem nie przesadzamy. Sk(cid:293)adnia „wzorców” wykluczania Po szczegó(cid:228)y odsy(cid:228)am do dokumentacji git-ignore(1). Co do zasady, ci(cid:241)g opisuj(cid:241)cy wykluczany plik b(cid:241)d(cid:274) pliki jest wzorowany na sk(cid:228)adni dopasowania nazw plików pow(cid:228)oki (sk(cid:228)adnia komentarzy równie(cid:276) przypomina komentarze pow(cid:228)oki). Warto zauwa(cid:276)y(cid:232) stosowanie znaku Rozdzia(cid:293) 2. Zaczynamy (cid:95) 53 Kup książkęPoleć książkę wykrzyknika do wzorca zanegowanego, co pozwala na uszczegó(cid:228)owie- nie ogólniejszych wzorców wykluczania. Git okre(cid:264)la status wyklu- czania danej (cid:264)cie(cid:276)ki na podstawie wszystkich zdefiniowanych wzorców wykluczania, nie poprzestaj(cid:241)c na pierwszym dopasowaniu. Liczy si(cid:246) faktycznie ostatnie znalezione dopasowanie: # Wykluczamy konkretny plik w podkatalogu katalogu bie(cid:298)(cid:261)cego: conf/config.h # Wykluczamy konkretny plik w katalogu bie(cid:298)(cid:261)cym: # (zauwa(cid:298) brak ./ ) /super-cool-program ## Wzorce bez uko(cid:286)ników obowi(cid:261)zuj(cid:261) zarówno w katalogu bie(cid:298)(cid:261)cym, ## jak i w jego podkatalogach. # Wykluczamy pojedyncze pliki obiektowe i archiwa obiektowe # (pliki *.o i *.a). *.[oa] # Wykluczamy biblioteki wspó(cid:225)dzielone... *.so # ... z wyj(cid:261)tkiem tej, na której bardzo nam zale(cid:298)y: !my.so # Wykluczamy katalogi o nazwie temp , ale zale(cid:298)y nam na # zwyczajnych plikach i dowi(cid:261)zaniach symbolicznych o takich nazwach: temp/ W plikach .git/info/exclude oraz w konfiguracji parametru core.excludesfile poj(cid:246)cie „katalogu bie(cid:276)(cid:241)cego” odnosi si(cid:246) do g(cid:228)ównego katalogu drzewa roboczego. Zauwa(cid:276)my, (cid:276)e regu(cid:228)y wykluczania odnosz(cid:241) si(cid:246) wy(cid:228)(cid:241)cznie do tych plików, które znajduj(cid:241) si(cid:246) w drzewie roboczym, ale nie zosta(cid:228)y jawnie dodane do repozytorium; nie da si(cid:246) zmusi(cid:232) Gita, (cid:276)eby ignorowa(cid:228) zmiany w plikach wchodz(cid:241)cych w sk(cid:228)ad repozytorium. Do tego mo(cid:276)na ewentu- alnie wykorzysta(cid:232) polecenie git update-index --assume-unchanged. Uwaga „Dopasowania” pow(cid:228)oki to bardzo proste wzorce, dalekie od ela- styczno(cid:264)ci wyra(cid:276)e(cid:254) regularnych. Git u(cid:276)ywa tych wzorców do okre- (cid:264)lania grup plików i odniesie(cid:254). Sk(cid:228)adnia dopasowa(cid:254) pow(cid:228)oki ró(cid:276)ni si(cid:246) szczegó(cid:228)ami w rozmaitych systemach (a to z powodu d(cid:228)ugiej historii tego mechanizmu); sk(cid:228)adnia u(cid:276)yta w Gicie jest udokumentowana na stronach fnmatch(3) i glob(3). Najpro(cid:264)ciej rzecz ujmuj(cid:241)c, symbol * dopasowuje sekwencj(cid:246) znaków niezawieraj(cid:241)cych uko(cid:264)nika (/); sym- bol ? dopasowuje pojedynczy znak (ponownie z wyj(cid:241)tkiem uko(cid:264)nika); a zakres [abc] dopasowuje jedno wyst(cid:241)pienie spo(cid:264)ród znaków a, b i c. 54 (cid:95) Git. Leksykon kieszonkowy Kup książkęPoleć książkę Skorowidz A acykliczno(cid:264)(cid:232), 29 acykliczny graf skierowany, 29 adresowanie pojedynczych zmian, 117–125 (cid:264)cie(cid:276)ki do pliku, 124 zawarto(cid:264)ci(cid:241), 23 zbiorów zmian, 125–127 adresownik, 140 AGS, 29 aktualizacja szybkiego nak(cid:228)adania, 41 aliasy polece(cid:254), 48 antydatowanie etykiet, 188 aplikowanie plików ró(cid:276)nicowych, 167 autor, 14, 21 B bazowa scalania, 37 bezpiecze(cid:254)stwo SHA-1, 26 bity trybu dost(cid:246)pu, 19 branch, 7 branch tip, 15 branches, 15 C centralne repozytorium, 194 commit graph, 14, 28 commit message, 45 commits, 14 committer, 14 content-based-addressing, 23 czyszczenie magazynu obiektów, 89 D DAG, 29 distributed version control system, 8 dodawanie nowego pliku, 55 zmian cz(cid:246)(cid:264)ciowych, 56–57 zmian do istniej(cid:241)cego pliku, 55–56 dopasowania pow(cid:228)oki, 54 dopasowywanie komunikatu z opisem zmiany, 122–123 dope(cid:228)nianie nazw ga(cid:228)(cid:246)zi, etykiet itp., 198 dost(cid:246)p do magazynu obiektów, 28 dost(cid:246)p zdalny, 170 HTTP, 173–174 SSH, 170–173 drzewo, 14, 18–19 drzewo robocze, 18, 49 E edytor tekstu, 45 edytowanie sekwencji zmian, 71–73 etykieta, 22, 186 201 Kup książkęPoleć książkę F fast-forward, 41 funkcja skrótu, 23 G ga(cid:228)(cid:241)(cid:274), 7, 15, 30–33, 75 a klonowanie repozytorium, 89–90 master, 15–16, 76 origin/topic, 17 pochodzenia, 17, 122 prze(cid:228)(cid:241)czanie mi(cid:246)dzy ga(cid:228)(cid:246)ziami, 78, 79 prze(cid:228)(cid:241)czanie z odwo(cid:228)aniem do konkretnej zmiany, 80 release, 15 (cid:264)ledz(cid:241)ca, 17, 40 tematyczna, 75 topic, 15 tworzenie, 76–77 usuwanie, 80–83 generowanie danych o stanie drzewa roboczego i indeksu, 196 zestawienia ga(cid:228)(cid:246)zi, 196 git rerere, 116 Git, informacje ogólne, 7–9, 13 GitHub, 9 graf zmian repozytorium, 14, 28 skierowany, 28 H hard links, 85 hash collisions, 25 hash function, 23 hashing, 26 202 (cid:95) Skorowidz I identyfikacja autora, 44–45 identyfikator, 23–27 w postaci pe(cid:228)nego skrótu SHA-1, 117 zmiany, 117 importowanie historii roz(cid:228)(cid:241)cznej, 153 liniowej historii, 155 nieliniowej historii, 156–157 zawarto(cid:264)ci z innego repozytorium, 153 indeks, 33–35 K katalog .git, 51 .git/objects, 27 /etc, 44 klonowanie repozytorium, 16–18, 84–85 wci(cid:241)ganie, 91 wypychanie, 91–92 klucz kryptograficzny, 47 kolizje funkcji skrótu, 25 kolory, 47 komentarz do zmiany, 45 komunikat z opisem zmiany, 14, 60–61 konflikt scalania, 103 konflikty przy nak(cid:228)adaniu zmian, 73 kontrola dost(cid:246)pu, 98 wersji, 7 korekta n ostatnio zatwierdzonych zmian, 195 ostatnio zatwierdzonej zmiany, 195 Kup książkęPoleć książkę (cid:292) rozpatrywane wzgl(cid:246)dem rejestru odniesie(cid:254), 120–122 (cid:228)a(cid:254)cuchy odniesie(cid:254), 123 (cid:228)ata, 165 (cid:228)aty z informacjami o zmianach, 168–169 M magazyn obiektów, 18 master, 17 merge, 7 merge base, 37 merge commit, 37 merge commits, 15 merging, 35 mode bits, 19 modu(cid:228)y zewn(cid:246)trzne, 192–193 modyfikacje indeksu, 55 niew(cid:228)(cid:241)czone do zmiany, 34 uj(cid:246)te w zmianie, 33 w(cid:228)(cid:241)czone do zmiany, 34 modyfikowanie historii zmian, 149 ostatnio zatwierdzonej zmiany, 65 N nak(cid:228)adanie pojedynczej zmiany na inn(cid:241) ga(cid:228)(cid:241)(cid:274), 196 narz(cid:246)dzia do scalania zawarto(cid:264)ci, 111 do wizualizacji stanu repozytorium, 192 nazwy rozpatrywane wzgl(cid:246)dem danej zmiany, 118–120 odniesienie HEAD, 30, 78 opcja e, 56 --force, 96 s, 56 O obiekt binarny, 18 obiekt drzewa, 19 object store, 18 octopus merge, 100 odniesienia, 29, 118 (cid:264)ledz(cid:241)ce, 39 opcje polecenia git reset, 69 P paczki, 27 parametr color.ui, 47 core.abbrev, 46 branch.autosetuprebase, 95 parametry o warto(cid:264)ciach logicznych, 44 parent commits, 14 patch, 165 plik .git/info/exclude, 53 .gitignore, 53 /etc/gitconfig, 44 ~/.gitconfig, 43 ró(cid:276)nicowy, 165 pliki niemonitorowane, 80 w zmiennej konfiguracyjnej core.excludes, 53 pod(cid:241)(cid:276)anie za etykietami, 188 podpis kryptograficzny, 22 polecenia powi(cid:241)zane, 30 Skorowidz (cid:95) 203 Kup książkęPoleć książkę polecenie exec, 74 add, 34, 52, 55 add -A, 57 add --interactive, 57 add -p, 56–57 add -u, 57 add/mv/rm, 34 branch -d, 80–83 branch -m, 83 branch -vv, 97 checkout, 40, 78 checkout --{ours,theirs} plik, 107 checkout -b, 76–77 checkout -p ga(cid:228)(cid:241)(cid:274) plik, 107 cherry, 146 cherry-pick, 21, 143, 176–177 clean, 182–183 clone, 84–85 commit, 33, 60 commit -a, 62 commit --amend, 65 config, 43 describe, 117 diff, 34, 188–190 diff --cached, 60 diff --staged, 35 fetch origin, 38 filter-branch, 160, 161–163 format-patch, 168 grep, 179–181 init, 49 instaweb, 190 git log, 46, 52, 59, 67, 128–134 format daty, 135 kolejno(cid:264)(cid:232) prezentacji zmian, 145 kolorowanie ró(cid:276)nic, 142 listy zmodyfikowanych plików, 136 204 (cid:95) Skorowidz ograniczanie listy zmian do wypisania, 132–134 opcja --format, 131 pokazywanie notek, 145 pokazywanie plików ró(cid:276)nicowych, 142 pokazywanie ró(cid:276)nic wyrazowych, 142 porównywanie ga(cid:228)(cid:246)zi, 143 przepisywanie nazwisk i adresów, 139 rejestr odniesie(cid:254), 134 skracanie nazwisk, 140 uzupe(cid:228)nienie odniesieniami, 134 wykrywanie kopii, 138 wykrywanie zmian nazw i kopiowania plików, 137 wyra(cid:276)enia regularne, 134 wyszukiwanie zmian, 141 wy(cid:264)wietlanie jednej ze stron, 144 zastosowania, 199 git log --decorate, 134 --dirstat, 137 --first-parent, 106 --follow, 138 -g, 120 master..other, 144 --name-only, 136 --name-status, 136 --notes[=ref], 145 -p, 142 -p --merge, 107 --walk-reflog (-g), 134 git ls-files, 33 git merge --abort, 95, 104 git merge -m, 108 git merge --no-commit, 108 git merge refactor, 35 Kup książkęPoleć książkę git merge --squash, 108 git mergetool, 111 git mergetool, 112 git mv, 58–59 git notes, 177–178 git pull, 35, 37–38, 40, 41 git pull, 91 git pull --rebase, 94 git push, 37–38, 41, 91 opcje, 92 git rebase, 71–73, 149–152, 156–157 git rebase --abort, 73 git rebase --continue, 74 git remote rm, 42 git remote set-url, 42 git remote show repozytorium-zdalne, 96 git replace, 158–159 git reset, 59–60 git reset, 68 git reset HEAD^, 95 git reset --patch, 60 git revert, 69 git rev-list, 117 git rev-parse, 117, 181 git rm, 57–58 git shortlog, 140, 147 git show, 185 git show -s, 123 git show-ref master, 52 git stash, 183–185 git stash --keep-index, 63 git status, 34 git status, 56 git tag, 186–187 git update-index --assume-unchanged, 54 git-format patch, 169 noaction, 73 pomoc, 48 porzucanie ci(cid:241)gu wielu zmian, 68–69 ostatnio zatwierdzonej zmiany, 68 pow(cid:228)oka bash, 11 poziom konfiguracji --local, 44 --global, 44 --system, 44 predefiniowane formaty polecenia git log, 130 pro(cid:264)by o wyci(cid:241)gni(cid:246)cie zmiany, 64 przegl(cid:241)danie historii zmian, 128 pull request, 64 puste katalogi, 63 R rebase, 149–152 refaktoryzacja, 35 reference repository, 87–89 refs, 29 refspec, 38 rejestr odniesie(cid:254), 65, 120 remote tracking, 17 repozytorium, 13 minimalne, 87 odniesienia, 87–89 pochodzenia, 17 zdalne, 84–85 reuse reordered resolution, 116 revision, 118–120 rew, 118–120 root commit, 20 rozstrzyganie konfliktów scalania, 106 Skorowidz (cid:95) 205 Kup książkęPoleć książkę S T scalanie, 7 ga(cid:228)(cid:246)zi, 15, 35 historii, 37 na bazie poprzednich decyzji, 116 o(cid:264)miornicowe, 100, 114–115 trójstronne, 109 zawarto(cid:264)ci, 36 scalanie zmian, 20, 93, 100, 109 Secure Hash Algorithm 1, Patrz SHA-1 SHA-1, 23–27 skracanie identyfikatora zmiany, 45–46 skrócony identyfikator obiektu, 117 skrótowce, 57 specyfikacja odniesie(cid:254), 38 SSH, 170–173 staged, 33 stan od(cid:228)(cid:241)czenia, 80 strategie scalania, 113–115 stronicowanie, 46 submodules, 192–193 systemy rozproszone, 8 scentralizowane, 8 tag, 22 tree, 14 tree object, 19 twarde dowi(cid:241)zania systemu plików, 85 tworzenie ga(cid:228)(cid:246)zi bez prze(cid:228)(cid:241)czania si(cid:246) na ni(cid:241), 197 listy plików zmodyfikowanych wybran(cid:241) zmian(cid:241), 198 nowego pustego repozytorium, 49–51 programu scalaj(cid:241)cego, 112–113 U Unix, 10 upstream, 17 urealnianie korekty zmiany, 160 usuwanie etykiety z lokalnego repozytorium, 187 pliku, 57–58 starych ga(cid:228)(cid:246)zi (cid:264)ledz(cid:241)cych nieistniej(cid:241)ce ju(cid:276) ga(cid:228)(cid:246)zie pochodzenia, 199 V version control, 7 (cid:315) (cid:264)cie(cid:276)ka bezwzgl(cid:246)dna, 125 wzgl(cid:246)dna, 125 (cid:264)ledzenie zdalnych repozytoriów, 84 206 (cid:95) Skorowidz Kup książkęPoleć książkę W wci(cid:241)ganie ze zmian(cid:241) bazy, 93–96 wci(cid:241)ganie zmian, 16–18, 37–42 wierzcho(cid:228)ki ga(cid:228)(cid:246)zi, 15 wpisywanie do indeksu wszystkich bie(cid:276)(cid:241)cych modyfikacji plików drzewa roboczego, 197 wskazania, 24 wspó(cid:228)dzielenie efektów prac, 16–18 magazynu, 24 magazynu obiektów, 86 wtyczki, 191 wycofanie n ostatnio zatwierdzonych zmian, 195 zmiany bazy, 152 modyfikacji z indeksu, 59–60 wycofywanie i modyfikowanie zatwierdzonych zmian, 64 wycofywanie zmiany, 69 cz(cid:246)sciowe, 70 wykluczanie plików, 52–53 wykorzystywanie opisu z innej zmiany, 195 wypisywanie listy plików w konflikcie podczas scalania, 196 wszystkich repozytoriów zdalnych, 199 wypychanie zmian, 16–18, 37–42 wyra(cid:276)enia adresuj(cid:241)ce, 117 wyra(cid:276)enie HEAD~, 68 wyswietlanie modyfikacji wprowadzonych przez zmian(cid:246), 198 bie(cid:276)(cid:241)cych modyfikacji plików drzewa roboczego, 197 wyznaczanie skrótu, 26 Z zachowywanie i przywracanie bie(cid:276)(cid:241)cych modyfikacji drzewa roboczego i indeksu, 197 zatwierdzaj(cid:241)cy, 14, 21 zatwierdzanie zmian, 20, 60, 55 zatwierdzanie zmiany do repozytorium, 15 zawarto(cid:264)(cid:232) repozytorium, 38 zdalne repozytorium, 17 zmiana, 14, 20–21 adresu URL repozytorium zdalnego, 199 bazy, 149–152 bie(cid:276)(cid:241)ca, 31 nadrz(cid:246)dna, 14, 20 nazwy ga(cid:228)(cid:246)zi, 83 nazwy pliku, 58–59 pocz(cid:241)tkowa, 20 pomini(cid:246)ta, 56 scalaj(cid:241)ca, 15, 37, 102 zmienna interactive.singlekey, 56 zmienna konfiguracyjna push.default, 93 Skorowidz (cid:95) 207 Kup książkęPoleć książkę 208 (cid:95) Skorowidz Kup książkęPoleć książkę
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Git. Leksykon kieszonkowy
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: