GIT - správný postup

GIT - správný postup
« kdy: 08. 04. 2014, 11:28:01 »
Zdravím Vás.

Verzování používám velmi krátce a proto bych potřeboval poradit ve věci správného použití gitu v následujícím případě:
- Více vývojářů pracuje na projektu v centrálním repozitáři.
- Každý z nich má u sebe přirozeně klon tohoto repozitáře na kterém pracuje.
- Mám rozpracovanou a ještě nefunkční svou část v souboru X.
- Kolega dokončí jistou podstatnou část kódu v souboru X, kterou prohlásí za funkční,
  comminte jí a pushne do centrálního repozitáře.
- Já bych v průběhu své práce chtěl jeho změny v mém rozpracovaném souboru vidět.
JAK SPRÁVNĚ NA TO?

Chtěl jsem provést pull centrálního repozitáře do mého clonu. Git mě zarazil a chce po mě nejdříve provést commit mých změn a nebo stash. Nicméně dělat teď commit se mi nechce, když můj kód ještě není v pořádku. Nerad bych stávající větev zaneřádil nepodstatnými commity. A co se týče stash tak si nejsem jistý.

Je snad správná cesta pomocí git commit --amend (jak přesně?) a nebo existuje možnost smazání některého commitu před pushnutím do centrálního repozitáře?

Předem velice děkuji za pomoc a za trpělivost.
Ať se daří.


Re:GIT - správný postup
« Odpověď #1 kdy: 08. 04. 2014, 11:33:33 »
Správný postup je použít stash, přesně k tomuhle to slouží. Odložíte si své změny stranou, aktualizujete, a své změny na aktualizaci znovu promítnete.

dword

Re:GIT - správný postup
« Odpověď #2 kdy: 08. 04. 2014, 11:38:58 »
V pracovnim adresari mate nejake rozpracovane zmeny, ktere brani natazeni zmen vaseho kolegy.

Prikazem git stash -u docasne (nedela se commit) odlozite vse aktualne rozpracovane, provedete git pull a az bude dokoncen, prikazem git stash pop znovu aplikujete posledni odlozene zmeny na stashi.

V tuto chvili by jste mel byt ve vami chtenem stavu.

Re:GIT - správný postup
« Odpověď #3 kdy: 08. 04. 2014, 12:35:07 »
jeste doplnim detailni info v cestine lze najit treba zde: http://git-scm.com/book/cs/N%C3%A1stroje-syst%C3%A9mu-Git-Odlo%C5%BEen%C3%AD

podlesh

Re:GIT - správný postup
« Odpověď #4 kdy: 08. 04. 2014, 13:28:38 »
Chtěl jsem provést pull centrálního repozitáře do mého clonu. Git mě zarazil a chce po mě nejdříve provést commit mých změn a nebo stash.
První věc: git fetch

Tím se provede stažení všech změn z centrálního repository a lze si je prohlížet napříklat pomocí git log, git diff, gitk, tig, atd.

Nicméně dělat teď commit se mi nechce, když můj kód ještě není v pořádku. Nerad bych stávající větev zaneřádil nepodstatnými commity. A co se týče stash tak si nejsem jistý.

Je snad správná cesta pomocí git commit --amend (jak přesně?) a nebo existuje možnost smazání některého commitu před pushnutím do centrálního repozitáře?
Citace
Ano, tato možnost existuje (git rebase -i). Já ji velmi rád používám, je to pěkná věc - commituji jak mi to vyjde (ideálně co nejmenší commity) a bez obav. Občas klidně i commitnu jenom "work in progress". Potom, když je to relativně hotové, tak se k tomu vrátím a pomocí interaktivního rebase si commity předělám, sloučím, zpřehácím a celkově učešu.

Druhou možností je git stash, ale osobně to moc nepoužívám.


Inkvizitor

Re:GIT - správný postup
« Odpověď #5 kdy: 08. 04. 2014, 13:50:47 »
1. git fetch je dobry napad (git pull je fetch+merge, pricemz merge v tomto pripade postrada smysl)
2. Nevidim duvod bat se commitu - repozitar, ktery clovek ma u sebe na lokalnim disku, je mozne modifikovat a libovolne historii prepisovat
3. git stash je jeden velky opruz; v gitu je mozne mit libovolne mnozstvi vetvi a tam ty rozpracovane veci mit normalne ulozene (s historii zmen zobrazenych v gitk atd.)

Re:GIT - správný postup
« Odpověď #6 kdy: 08. 04. 2014, 18:34:35 »
Git mě zarazil a chce po mě nejdříve provést commit mých změn a nebo stash. Nicméně dělat teď commit se mi nechce, když můj kód ještě není v pořádku. Nerad bych stávající větev zaneřádil nepodstatnými commity.
Co je to "zaneradit vetev"? Commituj mensi veci a casteji. To prece neni problem. Tohle je prave vyhoda gitu oproti SVN treba. Proste mas u sebe commitu kolik chces a pushnes je az kdyz to funguje. Ostatni pak pomoci pull dostanou zase funkcni vec.

Krom toho je samozrejme vyhodne pouzivat vetve. Pak das pull master/develop a rebase do sve vetve.

google: nvie git flow
Děkuji za možnost editace příspěvku.

dustin

Re:GIT - správný postup
« Odpověď #7 kdy: 08. 04. 2014, 19:59:33 »
Jasně že není důvod si zaneřádit větev commitem, který třeba nejde zkompilovat. Od toho ten stash je, aby šlo kdykoliv rebasnout na novou verzi z repozitáře, když kolega pošle změny. Funguje úplně v pohodě, používáme neustále.

Git je dost low level, chce si to napsat alespoň základní skripty, které stashují a rebasují automaticky. Máme jich pár, kdykoliv mohu zavolat skript "up" a vše se provede samo. Není to žádná věda.

Inkvizitor

Re:GIT - správný postup
« Odpověď #8 kdy: 08. 04. 2014, 20:10:58 »
Jasně že není důvod si zaneřádit větev commitem, který třeba nejde zkompilovat. Od toho ten stash je, aby šlo kdykoliv rebasnout na novou verzi z repozitáře, když kolega pošle změny. Funguje úplně v pohodě, používáme neustále.

Co znamená "zaneřádit větev commitem, který nejde zkompilovat"? Od toho máme například interaktivní rebase. Stash NIC neřeší, co by nešlo bez něj. "Funguje v pohodě", ale už bych se k němu nevracel.

dustin

Re:GIT - správný postup
« Odpověď #9 kdy: 08. 04. 2014, 20:15:53 »
Nevidím důvod řešit stash interaktivním rebasem. Commituji, až když je co commitovat, někdy každých pár minut, někdy jednou za několik hodin, až to odladím. Interaktivním rebasem commity srovnám, upravím popisy, pospojuji a pushnu k integračním testům. Manuálně commitovat kvůli stažené nové verze a pak to srovnávat rebasem je úplně zbytečné.

Inkvizitor

Re:GIT - správný postup
« Odpověď #10 kdy: 08. 04. 2014, 20:22:48 »
Nevidím důvod řešit stash interaktivním rebasem. Commituji, až když je co commitovat, někdy každých pár minut, někdy jednou za několik hodin, až to odladím. Interaktivním rebasem commity srovnám, upravím popisy, pospojuji a pushnu k integračním testům. Manuálně commitovat kvůli stažené nové verze a pak to srovnávat rebasem je úplně zbytečné.

Určitě záleží na tom, jak děláte v práci jiné věci. U nás třeba zase tak často rebase neděláme - já typicky jednou až dvakrát za den. Mezitím obyčejně udělám několik commitů tak jako tak, pokud píšu kód...

Re:GIT - správný postup
« Odpověď #11 kdy: 09. 04. 2014, 09:02:35 »
Děkuji všem za rady.
Stash mě skutečně dostal do chtěného stavu :),
takže jsem spokojen.