Vývoj softwaru je práce založená na spolupráci. Jako softwarový inženýr musíte sdílet svou práci s ostatními. Sdílení kódu a spolupráce se ale může komplikovat. Je obtížné sledovat různé změny, ke kterým dojde během životního cyklu softwaru. Vývojové týmy se tedy při procesu softwarové spolupráce spoléhají na nástroje pro správu verzí. Git je jedním z nejvýznamnějších nástrojů pro správu verzí v softwarovém průmyslu.
Spropitné: V tomto kurzu se naučíte, jak používat základy Gitu. Každá část končí několika otázkami. Než začnete číst tuto sekci, můžete si přečíst otázky. To vám pomůže pochopit důležité body a věnovat jim pozornost.
Bavte se učit Git!
Git: Stručný přehled
Git je systém řízení distribuované verze. Sleduje veškeré změny, které ve svých souborech a složkách provedete. Usnadňuje ukládání probíhající práce. Pokud dojde k problému, můžete snadno zkontrolovat dřívější verzi souboru nebo složky. V případě potřeby můžete dokonce vrátit celou svou základnu kódu na starší verzi.
Vývoj Gitu začal v roce 2005. Skupina linuxových jader udržovala svůj kód v BitKeeper, proprietárním distribuovaném systému řízení verzí. BitKeeper však zrušil bezplatné používání produktu. Takže Linus Torvalds, tvůrce a hlavní vývojář Linuxu, navrhl nový systém řízení distribuované verze open-source, který by splňoval požadavky vývojové komunity Linuxu. A Git se narodil.
Jako systém řízení distribuované verze Git nevyžaduje centralizované oprávnění ke sledování kódu. Starší ovládací prvky centralizované verze jako CVS, SVN nebo Perforce vyžadují, aby centrální servery udržovaly historii změn. Git může lokálně sledovat všechny změny a pracovat peer-to-peer. Je tedy univerzálnější než centralizované systémy.
Dotazy:
- Proč byste měli používat Git?
- Jaké jsou výhody řízení distribuované verze?
Instalace Git
Pro systémy Linux je instalace Gitu snadná. Pokud používáte distribuci založenou na Debianu, jako je Ubuntu, můžete použít apt install:
$ sudo apt nainstalovat git-allPro Fedoru, RHEL nebo CentOS můžete použít:
$ sudo dnf install git-allMůžete zkontrolovat, zda byl Git nainstalován, pomocí následujícího příkazu:
$ git --verzeMělo by vám ukázat verzi nainstalovaného Gitu, například:
git verze 2.17.0Jakmile si nainstalujete Git, je čas nastavit své uživatelské jméno a e-mail:
$ git config - globální uživatel.jméno "vaše uživatelské jméno"$ git config - globální uživatel.e-mail „[e-mail chráněn]“
Pomocí následujícího příkazu můžete zkontrolovat, zda byly konfigurace správně nastaveny:
$ git config - seznamuživatel.jméno = vaše uživatelské jméno
uživatel.email = vaše uživatelské jméno @ příklad.com
Spropitné: Je důležité nastavit uživatele.jméno a uživatel.e-mail, protože tyto konfigurace se používají ke sledování vašich změn.
Dotazy
- Jaký je příkaz pro instalaci Git na váš systém Linux??
- Proč byste měli nastavit uživatele.jméno a uživatel.konfigurace e-mailu? Jak je nastavíte?
Koncepční porozumění Gitu
Abyste mohli používat Git, musíte nejprve porozumět těmto čtyřem konceptům:
- Pracovní adresář
- Pracovní plocha
- Úložiště
- Vzdálené úložiště
Pracovní adresář, pracovní oblast a úložiště jsou ve vašem počítači lokální. Vzdáleným úložištěm může být jakýkoli jiný počítač nebo server. Pojďme si tyto koncepty představit jako čtyři pole, do kterých se vejdou standardní papíry A1.
Předpokládejme, že píšete dokument ručně na papír A1 u svého stolu. Tento dokument ponecháte v poli pracovního adresáře. V určité fázi své práce se rozhodnete, že jste připraveni si ponechat kopii práce, kterou jste již provedli. Provedete tedy fotokopii svého aktuálního papíru a vložíte jej do pracovní schránky.
Pracovní pole je dočasná oblast. Pokud se rozhodnete zlikvidovat fotokopii v pracovním poli a aktualizovat ji o novou kopii dokumentu pracovního adresáře, nebude existovat žádný trvalý záznam tohoto připraveného dokumentu.
Předpokládejme, že jste si docela jisti, že chcete uchovat trvalý záznam o dokumentu, který máte v pracovní ploše. Poté vytvoříte fotokopii dokumentu pracovní schránky a přesunete ji do schránky úložiště.
Když jej přesunete do pole úložiště, stanou se dvě věci:
- Snímek dokumentu se uloží trvale.
- Je vytvořen záznam souboru protokolu, který je součástí snímku.
Položka protokolu vám pomůže najít konkrétní snímek dokumentu, pokud jej v budoucnu budete potřebovat.
Nyní v poli místního úložiště máte snímek své práce a položku protokolu. Ale je k dispozici pouze vám. Takže si vytvoříte kopii dokumentu místního úložiště spolu se souborem protokolu a vložíte jej do pole v místnosti zásobování společností. Nyní může kdokoli ve vaší společnosti přijít a vytvořit kopii vašeho dokumentu a odnést si ji ke svému stolu. Krabicí v zásobovací místnosti by bylo vzdálené úložiště.
Vzdálené úložiště je něco jako sdílení dokumentu pomocí Dokumentů Google nebo Dropbox.
Dotazy:
- Můžete definovat pracovní adresář, pracovní prostředí, úložiště a vzdálené úložiště?
- Můžete nakreslit, jak se dokumenty pohybují z jedné fáze do druhé?
Vaše první úložiště Git
Jakmile máte nainstalovaný Git, můžete začít vytvářet vlastní úložiště Git. V této části se chystáte inicializovat úložiště Git.
Předpokládejme, že pracujete na projektu vývoje webových aplikací. Pojďme vytvořit složku s názvem project_helloworld a přejděte do adresáře:
$ mkdir project_helloworld$ cd project_helloworld
Můžete říct Gitu, aby sledoval tento adresář pomocí následujícího příkazu:
$ git initMěli byste vidět výstup, jako je tento:
Inicializované prázdné úložiště Git v / Users / zakh / _work / LearnGIT / git_tutorial /project_helloworld /.sakra
Nyní budou všechny soubory a složky uvnitř project_helloworld sledovány Gitem.
Dotazy:
- Jak inicializujete adresář, který má Git sledovat?
Základní příkazy Git: stav, přihlášení, přidání a potvrzení
Příkaz status zobrazuje aktuální stav pracovního adresáře a příkaz log historii. Zkusme příkaz status:
stav $ gitNa pobočce
Počáteční potvrzení
nic k spáchání (vytváření / kopírování souborů a sledování pomocí příkazu „git add“)
Výstup příkazu git status říká, že jste na hlavní větvi. Toto je výchozí větev, kterou Git inicializuje. (Můžete si vytvořit vlastní pobočky. Více o pobočkách později). Výstup také říká, že se není čeho dopustit.
Zkusme příkaz log:
$ git logfatální: vaše aktuální větev „master“ ještě nemá žádné závazky
Je tedy čas vytvořit nějaký kód. Vytvořme soubor s názvem index.html:
Ahoj světe
K vytvoření souboru můžete použít textový editor. Po uložení souboru znovu zkontrolujte stav:
stav $ gitNa pobočce
Počáteční potvrzení
Nesledované soubory:
(použijte „git add
index.html
není přidáno nic k potvrzení, ale jsou přítomny nesledované soubory (ke sledování použijte „git add“)
Git vám říká, že máte soubor s názvem index.html ve vašem pracovním adresáři, který není sledován.
Pojďme se ujistit, index.html je sledován. Budete muset použít příkaz add:
$ git přidat index.htmlPřípadně můžete použít „.„Možnost přidat vše do adresáře:
$ git přidat .Nyní zkontrolujme stav znovu:
stav $ gitNa pobočce
Počáteční potvrzení
Provedené změny:
(použijte "git rm --cached
nový soubor: index.html
Zelená označuje, že index.html soubor je sledován Gitem.
Spropitné: Jak je uvedeno ve výše uvedených pokynech, pokud použijete příkaz:
$ git rm - index uložený v mezipaměti.htmlVáš index.html se vrátí zpět do nesledovaného stavu. Budete ji muset znovu přidat, abyste ji přivedli zpět k přípravě.]
Podívejme se na protokol znovu:
$ git logfatální: vaše aktuální větev „master“ ještě nemá žádné závazky
Takže i když Git sleduje index.html, v úložišti Git zatím není o souboru nic. Pojďme potvrdit naše změny:
$ git commit -m "Index potvrzení.html "Výstup by měl vypadat asi takto:
[master (root-commit) f136d22] Index potvrzení.html
1 soubor změněn, 6 vložení (+)
vytvořit režim 100644 index.html
Text uvnitř uvozovek za „-m“ je komentář, který bude vložen do souboru protokolu. Můžete použít git commit bez „-m“, ale poté Git otevře textový editor, který vás požádá o napsání komentářů. Je snazší vkládat komentáře přímo do příkazového řádku.
Nyní se podívejme na náš logovací soubor:
$ git logspáchat f136d22040ba81686c9522f4ff94961a68751af7
Autor: Zak H
Datum: Po 4. června 16:53:42 2018-0700
Rejstříkový index.html
Můžete vidět, že ukazuje potvrzení. Úspěšně jste provedli změny ve vašem místním úložišti. Pokud chcete stejný protokol stručně zobrazit, můžete použít následující příkaz:
$ git log - onlinef136d22 Revizní index.html
Do budoucna použijeme tuto formu příkazu log, protože usnadňuje pochopení toho, o co jde.
Začněme s úpravami indexu.html. Otevřete index.html soubor v editoru a změňte řádek „Hello world“ na „Hello world! To jsem já!“A uložte to. Pokud stav znovu zkontrolujete, uvidíte, že si Git všiml, že soubor upravujete:
stav $ gitNa pobočce
Změny, které nebyly provedeny pro potvrzení:
(použijte „git add
(použijte "git checkout." --
upraveno: index.html
k potvrzení nebyly přidány žádné změny (použijte „git add“ a / nebo „git commit -a“)
Změna je stále ve vašem pracovním adresáři. Musíte ji zatlačit do pracovní oblasti. Použijte příkaz add, který jste použili dříve:
$ git přidat .Znovu zkontrolujte stav:
stav $ gitNa pobočce
Provedené změny:
(použijte "git reset HEAD
upraveno: index.html
Nyní jsou vaše změny v pracovní oblasti. Můžete jej odevzdat do úložiště pro trvalou úschovu:
$ git commit -m "Upravený index.html k šťastnější zprávě "[master 0586662] Upravený index.html k šťastnější zprávě
1 soubor změněn, 1 vložení (+), 1 smazání (-)
V protokolu můžete zkontrolovat trvalé změny:
$ git log - online0586662 Upravený index.html k šťastnější zprávě
f136d22 Revizní index.html
V této části jste se naučili používat příkazy status, log, add a commit ke sledování svých dokumentů v Gitu.
Dotazy:
- Co dělá stav git?
- Co dělá git log?
- Co dělá git add??
- Co dělá git commit??
Zpět na starší soubory pomocí služby Checkout
Když spácháte soubor v Gitu, vytvoří se pro každé potvrzení jedinečný hash. Můžete je použít jako identifikátory pro návrat ke starší verzi.
Předpokládejme, že se chcete vrátit k dřívější verzi indexu.html. Nejprve se podívejme na index.html v aktuálním stavu:
$ kočičí index.htmlAhoj světe! To jsem já!
Vidíte, že máte novější verzi („Hello world! To jsem já!”). Pojďme zkontrolovat protokol:
$ git log - online0586662 Upravený index.html k šťastnější zprávě
f136d22 Revizní index.html
Hodnota hash pro předchozí verzi byla f136d22 („Hello world“). K této verzi se můžete dostat pomocí příkazu checkout:
$ git pokladna f136d22Poznámka: Odhlášení „f136d22“.
Jste ve stavu „odpojená HLAVA“. Můžete se rozhlédnout a provádět experimentální změny
a spáchat je, a můžete zrušit všechny závazky, které v tomto stavu uděláte
aniž by to ovlivnilo jakékoli pobočky provedením další platby.
Chcete-li vytvořit novou větev, která zachová vaše vytvořené závazky, můžete
udělejte to (nyní nebo později) opětovným použitím -b s příkazem pokladny. Příklad:
pokladna git -b
HEAD je nyní na f136d22 ... Committing index.html
Pokud se podíváte na obsah indexu.html, uvidíte:
$ index koček.htmlAhoj světe
Má pouze „Hello world“. Takže váš index.html se změnil na starší verzi. Pokud zkontrolujete stav:
stav $ gitHEAD se oddělil na f136d22
nic k spáchání, pracovní adresář čistý
Git vám v podstatě říká, že HEAD není na posledním potvrzení. Můžete se vrátit k poslednímu potvrzení odevzdáním hlavní větve pomocí následujícího příkazu:
$ git pokladna masterPředchozí pozice HEAD byla f136d22 ... Index potvrzení.html
Přepnuto na větev „master“
Nyní, když zkontrolujete stav:
stav $ gitNa pobočce
nic k spáchání, pracovní adresář čistý
Červené varování zmizelo. Také pokud zkontrolujete svůj index.html, měli byste se vrátit k nejnovější verzi:
$ index koček.htmlAhoj světe! To jsem já!
Příkaz pokladny vás dostane do různých stavů. Více o pokladně se dozvíme v další části.
Dotazy:
- Jak používáte příkaz git checkout k přechodu na starší verzi souboru?
- Jak používáte git checkout k návratu k nejnovější verzi souboru?
Pokladna, větvení a sloučení
Větvení je jednou z nejlepších funkcí Gitu. Pomůže vám oddělit práci a více experimentovat. V jiných systémech pro správu verzí bylo větvení časově náročné a obtížné. Git usnadnil větvení a slučování.
Jak jste si všimli v příkazu status, při vytváření nového úložiště Git se nacházíte v hlavní větvi.
stav $ gitNa pobočce
nic k spáchání, pracovní adresář čistý
Předpokládejme, že vytváříte web pro svého přítele Davida. Chcete znovu použít kód svého vlastního webu. Větvení je skvělé řešení. Zavolejme pobočku david_website.
Můžete vydat následující příkaz:
$ git větev david_websitePomocí následujícího příkazu můžete zobrazit všechny větve:
$ git větev - seznamdavid_website
* mistr
Hvězda (*) vedle pána znamená, že jste stále v hlavní větvi. Pobočku david_website můžete zkontrolovat pomocí následujícího příkazu:
$ git pokladna david_websitePřepnuto na větev „david_website“
Nyní, když znovu zkontrolujete seznam poboček, uvidíte:
$ git větev - seznam* david_website
mistr
Takže jste na větvi david_website.
Pojďme změnit index.html z „Hello world! To jsem já!“Na„ Ahoj světe! To je David!„A pak to zinscenujte a odevzdejte:
$ git přidat .$ git commit -m "Změněný web pro Davida"
Pokud zkontrolujete protokoly, měli byste vidět:
$ git log - online345c0f4 Změněný web pro Davida
0586662 Upravený index.html k šťastnější zprávě
f136d22 Revizní index.html
A váš indexový soubor by měl vypadat takto:
$ kočičí index.htmlAhoj světe! To je David!
Nyní se podívejme na hlavní větev znovu:
$ git pokladna masterPřepnuto na větev „master“
Pokud zkontrolujete stav a protokol:
stav $ gitNa pobočce
nic k spáchání, pracovní adresář čistý
$ git log - online
0586662 Upravený index.html k šťastnější zprávě
f136d22 Revizní index.html
Všimněte si, že nemáte třetí potvrzení v masteru. Protože toto potvrzení je udržováno pouze ve větvi david_website.
To se stalo
Předpokládejme, že v této fázi se rozhodnete, že nechcete pokračovat na svém webu. Budeš jen vývojářem pro Davida. Chcete tedy sloučit změny ve větvi david_website s masterem. Z hlavní větve stačí vydat následující příkazy (příkaz stavu se používá ke kontrole, zda jste na správném místě):
stav $ gitNa pobočce
nic k spáchání, pracovní adresář čistý
$ git merge david_website
Aktualizace 0586662… 345c0f4
Rychle vpřed
index.html | 2 +-
1 soubor změněn, 1 vložení (+), 1 smazání (-)
Spropitné: Stahujete změny z david_website do master. Abyste toho dosáhli, musíte být na pánovi.
Nyní, pokud zkontrolujete protokol na hlavním serveru, uvidíte, že je tam třetí potvrzení:
$ git log - online345c0f4 Změněný web pro Davida
0586662 Upravený index.html k šťastnější zprávě
f136d22 Revizní index.html
Úspěšně jste sloučili větev david_website do hlavní. A váš index.html pro hlavní větev vypadá stejně jako větev david_website:
$ kočičí index.htmlAhoj světe! To je David!
Pobočku david_website si můžete ponechat:
$ git větev - seznamdavid_website
* mistr
Nebo jej můžete smazat:
$ git branch -d david_websiteSmazaná větev david_website (byla 345c0f4).
Po odstranění byste už neměli vidět větev david_website:
$ git větev - seznam* mistr
Spropitné: Pokud se během sloučení Git nemůže sloučit automaticky, zobrazí se vám chyby konfliktu sloučení. V takovém případě musíte ručně vyřešit problémy se slučováním.
Dotazy:
- Proč potřebujete větvení?
- Jak větvíte a slučujete soubory a složky?
Vzdálené úložiště
Až dosud byla veškerá vaše práce lokální. Prováděli jste změny v místním úložišti. Ale je čas sdílet svou práci se světem.
Vzdálené úložiště Git je v podstatě další kopie vašeho místního úložiště, ke které mají přístup ostatní. Můžete nastavit server a nastavit jej jako vzdálené úložiště. Ale většina lidí používá pro tento účel GitHub nebo Bitbucket. Můžete si zde zdarma vytvořit veřejná úložiště, ke kterým má kdokoli přístup.
Pojďme vytvořit vzdálené úložiště na GitHubu.
Nejprve si musíte vytvořit účet GitHub []. Jakmile máte účet, vytvořte nové úložiště pomocí tlačítka „Nové úložiště“. Jako název úložiště použijte „project_website“ (pokud chcete, můžete si vybrat něco jiného).
Měla by se zobrazit karta Kód s pokyny, jako jsou tyto:
… Nebo vytvořte nové úložiště na příkazovém řádku
echo "# project_website" >> README.mdgit init
git přidat README.md
git commit -m "první potvrzení"
git remote add origin git @ github.com: yourusername / project_website.sakra
git push -u origin master
Zkopírujte následující příkaz „git remote add origin“ a spusťte jej ve svém pracovním adresáři:
$ git remote add origin git @ github.com: yourusername / project_website.sakraPoznámka: Ve vašem případě by vaše uživatelské jméno mělo být to, co jste použili k vytvoření účtu GitHub.
Ve výše uvedeném příkazu jste instruovali Git o umístění vzdáleného úložiště. Příkaz říká Git, že „původ“ vašeho pracovního adresáře project_helloworld bude „[chráněn e-mailem]: vaše uživatelské jméno / project_website.sakra “.
Nyní posuňte svůj kód z hlavní větve do původu (vzdálené úložiště):
$ git push origin masterPočítání objektů: 9, hotovo.
Delta komprese pomocí až 4 vláken.
Komprese objektů: 100% (6/6), hotovo.
Psaní objektů: 100% (9/9), 803 bajtů | 0 bajtů / s, hotovo.
Celkem 9 (delta 2), znovu použito 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
Chcete-li git @ github.com: yourusername / project_website.sakra
* [nová větev] pán -> pán
Pokud obnovíte prohlížeč v GitHubu, měli byste vidět, že index.html soubor je tam nahoře. Váš kód je tedy veřejný a ostatní vývojáři si jej mohou zkontrolovat a upravit ve vzdáleném úložišti.
Jako vývojář budete pracovat s kódem jiných lidí. Takže stojí za to vyzkoušet pokladní kód z GitHubu.
Pojďme do nového adresáře, kde nemáte nic. Na pravé straně úložiště GitHub si všimnete tlačítka „Klonovat nebo stáhnout“. Pokud na něj kliknete, měl by vám poskytnout adresu SSH. Spusťte následující příkaz s adresou SSH:
$ git klon git @ github.com: yourusername / project_website.sakraVýstup by měl vypadat takto:
$ git klon git @ github.com: yourusername / project_website.sakraKlonování na 'project_website' ..
remote: Počítání objektů: 9, hotovo.
remote: Komprese objektů: 100% (4/4), hotovo.
remote: Celkem 9 (delta 2), znovu použito 9 (delta 2), znovu použito v balíčku 0
Přijímání objektů: 100% (9/9), hotovo.
Řešení delt: 100% (2/2), hotovo.
Kontrola připojení… hotovo.
Vytvoří project_website ve vaší čisté složce. Pokud vstoupíte dovnitř, měli byste vidět index.html z vašeho project_helloworld.
Dosáhli jste tedy následujícího:
- Vytvořeno a provedeno změny v project_helloworld
- Nahrál kód na GitHub na project_website
- Stáhněte si kód z GitHubu
Pojďme další soubor z nového pracovního adresáře project_website:
$ touch ReadMe.md$ git přidat .
$ git commit -m "Přidáno ReadMe.md "
$ git push origin master
Pokud obnovíte stránku GitHub project_website, měli byste vidět ReadMe.md soubor tam.
Poznámka: Když stáhnete kód z GitHubu, pracovní adresář automaticky zná původ. Nemusíte to definovat pomocí příkazu „git remote add origin“.
Dotazy:
- Proč musíte používat vzdálená úložiště?
- Jak nastavíte aktuální místní úložiště pro připojení ke vzdálenému úložišti?
- Jak naklonujete vzdálená úložiště do místního počítače?
Závěr
Více informací o všech příkazech najdete v dokumentech Git []. I když jsou k dispozici nástroje uživatelského rozhraní Git, nejlepší způsob, jak zvládnout Git, je příkazový řádek. Získáte silnější základ pro vaši vývojovou práci.
Další studie:
- https: // git-scm.com / dokumenty
- https: // git-scm.com / book / en / v2
- https: // git-scm.com / videa