Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: daneel 08. 04. 2014, 11:28:01

Název: GIT - správný postup
Přispěvatel: daneel 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ří.
Název: Re:GIT - správný postup
Přispěvatel: Filip Jirsák 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.
Název: Re:GIT - správný postup
Přispěvatel: dword 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.
Název: Re:GIT - správný postup
Přispěvatel: Ziktofel 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
Název: Re:GIT - správný postup
Přispěvatel: podlesh 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.
Název: Re:GIT - správný postup
Přispěvatel: Inkvizitor 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.)
Název: Re:GIT - správný postup
Přispěvatel: to_je_jedno 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
Název: Re:GIT - správný postup
Přispěvatel: dustin 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.
Název: Re:GIT - správný postup
Přispěvatel: Inkvizitor 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.
Název: Re:GIT - správný postup
Přispěvatel: dustin 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é.
Název: Re:GIT - správný postup
Přispěvatel: Inkvizitor 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...
Název: Re:GIT - správný postup
Přispěvatel: daneel 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.