-
Notifications
You must be signed in to change notification settings - Fork 6
Working with git
Vojtech-Sassmann edited this page Oct 24, 2017
·
4 revisions
* Přidejte vazbu na centrální repozitář (upstream)
cd ~/[cílová_složka]git remote add upstream https://github.com/VECTOUN/pa165project.git
git remote add upstream git@github.com:VECTOUN/pa165project.git
git checkout master # přepnu na větev master git fetch upstream # stáhnu aktualizaci git merge --ff-only upstream/master # aplikuji změny na svůj master git push origin master # pokud chci, mohu si rovnou aktualizovat i svůj master na originu
- Následující příkaz vytvoří novou pracovní větev z masteru (ten si nejdříve aktualizujte) a přepne vás na ni.
git checkout -b [jméno_větve] master
- Pokud přepínáte mezi větvemi a máte rozdělanou (necommitnutou) práci, tak se změny v souborech přepočítávají na aktuální HEAD revizi dané větve.
- Při přepínání tak může dojít ke konfliktům (pokud dojde, přepnutí se nepovolí).
- Řešením je změny uchovat pomocí příkazu @git stash@ a až se chceme vrátit zpět, tak obnovit pomocí @git unstash@. ** Mezitím můžeme přepnout větev na jinou, provést nezbytnou práci a zase se vrátit zpět. ** Pozor na akce měnící původní větev (commit, rebase, merge), protože při následné aplikaci stashe může dojít ke konfliktu, který musíte ručně vyřešit.
- Před aktualizací commitněte všechnu rozdělanou práci nebo si rozpracované soubory schovejte ve stashi.
- Ideálním způsobem aktualizace pracovní větve je její přesunutí na HEAD masteru pomocí rebase.
git checkout [pracovní_větev] git rebase master
- Pozor, tato akce mění historii. Pokud jste už větev sdíleli (origin, pull request), musíte při dalším pushi použít přepínač @--force@.
git push origin [pracovní_větev] --force
- Je výhodné provádět aktualizaci pravidelně, případné konflikty v souborech jsou menší.
- Provádějte zvláště před podáním pull requestu, aby šel snadno schválit a mergnout.
Pokud pracujete se stejnou částí kódů jako někdo jiný, dost často se stane, že se Vaše změny potkají. Když se do stabilní větvě začlení jedna, už bez konfliktu nejde začlenit druhá. Problém nastává v okamžiku, kdy jste zavolali @git rebase@ nebo @git merge@.
- Git na konzoli vypisuje, které soubory mergoval a kde je konflikt.
- Obsah konfliktního souboru může vypadat např. následovně
<<<<<<< HEADcontact : email.support@github.com=======please contact us at support@github.com>>>>>>> iss53
- U všech souborů v konfliktu proveďte takové úpravy, aby byl soubor v pořádku a šel celý projekt kompilovat.
- Takto opravené soubory přidejte do changesetu
git add [cesta+název_souboru]
- Dokončete původní akci pomocí
git rebase --continue # pro rebase git commit # pro merge
- Pokud to z nějakého důvodu potřebujete, můžete při výskytu konfliktu vrátit vše zpět pomocí
git rebase --abort # pro rebase git merge --abort # pro merge
- Jestliže byla Vaše práce schválena a mergnuta na @master@, můžete pracovní větev smazat a začít pracovat na nové.
git push origin :[jméno_větve] # smaže větev z originu git checkout master # pokud jste na mazané větvi, přepněte se jinam (např. master) git branch -D [jméno_větve] # force smaže vaši větev na disku