Nauč se Python > Kurzy > Začátečnický kurz PyLadies > Vlastní funkce, Git a spolupráce > Spolupráce

Spolupráce

„Opravdové” programy zřídka vznikají prací jednoho člověka. Víc hlav víc ví, a tak je dobré si na projekt vytvořit tým.

Každý člen týmu potřebuje mít přístup k práci ostatních. K tomu se dá použít Git: někde na internetu si zařídíme sdílený repozitář, se kterým se všichni budou synchronizovat.

GitHub

Na Internetu existuje spousta stránek, kam se dají nahrávat gitové repozitáře s kódem – např. GitLab, BitBucket, Pagure nebo Launchpad. Aktuálně nejpopulárnější je ale GitHub, který si tady ukážeme.

Jestli ještě nemáš uživatelský účet na github.com, jdi tam a založ si ho.

Spojení tvého repozitáře s remote repozitářem

Na úvodní stránce Githubu po založení účtu uvidíš na úvodní stránce Learn Git and GitHub without any code! a pod ním najdeš tlačítko Start a project. Zvol si jméno pro svůj nový repozitář, třeba pyladies a zbytek nastavení nech tak, jak je a klikni na Create repository.

Uvidíš stránku s velkým množství různých příkazů. Nás zajímá druhá sekce …or push an existing repository from the command line.

Zkopíruj si příkaz začínající na git remote add origin ... a vlož ho do příkazové řádky tak, kde máš svůj gitový repozitář, který jsme si společně nastavily. Po stisknutí enter ti příkazová řádka nic nevypíše, což je signál, že všechno proběhlo v pořádku.

Stejným způsobem si zkopíruj a vlož k sobě do terminálu příkaz git push -u origin master. Github se tě zeptá na tvé přihlašovací údaje. Vlož je (pozor, když budeš psát heslo, tak to bude vypadat, že vůbec nepíšeš, to je však jen z důvodu bezpečnosti, klávesnice ti funguje v pořádku) a pak už by si měla vidět Branch 'master' set up to track remote branch 'master' from 'origin'.

To znamená, že tvůj lokální repozitář se právě nahrál na tzv. remote repozitář. Repozitář jsme označili jménem origin. Když se proklikneš do svého nového repozitáře na Githubu (https://github.com/tvoje_jmeno/nazev_repozitare), uvidíš tu přesnou kopii tvé složky s lekcemi.

Posílání změn (git push)

Co když uděláš nějaké změny, například vypracuješ domácí úkol na svém druhém počítači a chtěla by, aby změny byly vidět v tvém repozitáři na Githubu? K tomu slouží příkaz git push.

Pamatuješ ještě na básničku, kterou jsme psali, když jsme se učili s Gitem? Napiš si jí ještě jednou, ať jí neztratíme. Přepni se do složky aktuální lekce, vytvoř soubor basnicka.txt a napiš do něj nějakou básničku. Přidej jí do Gitu (pomocí příkazů git add a git commit). Nezapomeň, že je třeba mít na obou počítačích nainstalovaný a nastavený Git.

Pomocí příkazu git push origin master nahraješ nové změny na Github.

Stažení změn (git pull)

Máš zase svůj oblíbený počítač, kde máš všechny materiály, ale chybí ti tam úkol, který si vypracovala na svém druhém počítači a nahrála na Github?

Přepni se do složky s materiály, kde máš svůj Gitový repozitář a napiš git pull origin master. Všechny změny by se ti měly stáhnout do tvého lokálního repozitáře.

Žádost o začlenění (pull request)

Pull requesty se používají, když chceš začlenit nějaké změny do projektu, na kterém pracuješ. Ve větvi master by měl být funkční a hotový kód, na různé pokusy slouží větve branch, o kterých jsme mluvili v minulé sekci.

My budeme využívat pull requesty k efektivní kontrole domácích projektů. Vytvoř si teď pro demonstraci novou větev, ve které upravíme naší básničku git branch uprava_basnicky a přepni se do ní git checkout uprava_basnicky. Teď udělej nějaké změny v básničce, přidej autora, další sloku, cokoliv tě napadne.

Přijde úpravy do Git jako novou revizi pomocí příkazů git add a git commit. Pak pomocí příkazu git push origin uprava_basnicky nahraj změny na Github. Vidíš, že v tomhle případě nepíšeme git push origin master, protože teď nechceme zveřenovat změny ve větvi master, ale ve větvi, kde jsme upravili naší básničku.

Jdi do svého repozitáře na Github a klikni na sekci Pull requests. Uvidíš velké zelené tlačítko New pull request. Po kliknutí uvidíš stránku nadepsanou Compare changes. Tady musíš nastavit, co kam chceš vlastně začlenit. Jako base nech větev master a do compare zvol větev uprava_basnicky.

Github ti ukáže všechny změny, které si na té větvi udělala, pak už stačí jen kliknout na Create new pull request. V sekci Pull requests najednou uvidíš v závorce (1). To znamená, že si vytvořila pull request.

Pošli odkaz na pull request svému kouči, který ti domácí úkol opraví. Díky Githubu ti může napsat komentáře přímo do kódu a nebude tak muset vypisovat čísla řádků a do je na nich špatně. Až ti kouč úkol schválí, můžeš změny sloučit do master větve pomocí tlačítka Merge pull request. Pak se ti správný a schválený úkol nahraje do tvé master větve. Aby si ho měla v master větvi i ve svém počítači, použij náš známý příkaz git pull origin master.

Naklonování repozitáře (git clone)

Pokud budeš chtít mít přístup ke svým materiálům z lekcí z dalšího počítače, je nutné si tam repozitář tzv. naklonovat. Nezapomeň, že je třeba mít nainstalovaný a nastavený Git. Na úvodní stránce tvého repozitáře uvidíš velké zelené tlačítko Clone or download. Klikni na něj a zvol možnost Clone with HTTPS. Ještě tu je druhá možnost (Clone with SSH), kterou nebudeme využívat. V příkazové řádce uvidíš Cloning into 'nazev_repozitare'.... Vytvořila se ti nová složka, kde je přesná kopie tvého repozitáře z githubu. Přepni se do ní, zkus příkaz git status. Funguje?

Hlášení chyb (issues)

Občas nastane situace, kdy v nějakém projektu najdeš chybu, ale nemáš čas nebo znalosti, abys ji opravila. Pro tyto případy slouží na GitHubu záložka Issues, kde se nachází seznam nahlášených problémů. Nenajdeš-li mezi nimi „svoji” chybu, můžeš ji nahlásit – stačí kliknout na New Issue a můžeš psát, kdy chyba nastává, co program dělá špatně a co by měl dělat místo toho.

Návod na odevzdání domácího úkolu

  • Vytvoř si novou větev, kterou si pojmenuj nějak unikátně (např. piskvorky). Je lepší nepoužívat diakritiku a jako oddělovač používat podtržítko. git branch piskvorky
  • Přepni se do nové větve. git checkout piskvorky
  • Napiš úkol.
  • Přidej změny do stage a pak udělej commit. git add piskvorky, git commit -m 'Home work - game piskvorky.'
  • Pushni větev do repozitáře na githubu. git push origin piskvorky
  • Udělej nový pull request. Návod v sekci Žádost o začlenění (pull request)
  • Pošli koučovi odkaz na pull request do slacku.
  • Potom, co ti kouč úkol schválí, udělej merge do master větve. Na stránce pull requestu v dolní části je zelené tlačíko Merge pull request.
  • Stáhni si změny do lokálního repozitáře (ve tvém počítači) do větve master. git checkout master, git pull origin master
  • Pokud budeš v průběhu práce na domácích úkolu dělat změny v jiných souborech, přepni se nejdřív na větev master, udělej změny a commitni je a pak se vrať do větve s domácím úkolem.

Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem. Přejít na stejnou lekci v kurzu pro samouky.