Autor Zpráva
doominick
Profil *
Ahoj, potřeboval bych poradit... tedy jestli někdo umíte trochu lépe ovládat GitHub
Prostě situace je taková:
Udělám fork nějakého projektu, přidám co potřebuji, udělám pull request, autor ho schválí a tím sloučí mé změny s hlavním projektem. Následně sám přidá pár commitů a teď je tu problém

Když chci udělat další změny, jak mám postupovat?

Protože vlastní fork jeho repozitáře už mám, ale v něm nejsou ty poslední změny, zatím jsem to řešil tak, že jsem svůj fork celý smazal a založil znovu. Tohle myslím není nejlepší řešení, nešlo by to nějak lépe?
O Gitu jsem něco málo četl, základní ovládání zvládám, ale tady jsme trochu mimo. Nevím přesně, jestli moje otázka spadá do problematika GITu nebo GitHubu. Takže se možná neptám úplně dobře.

Předem díky za odpověď
Jan Tvrdík
Profil
doominick:
V prvé řadě je dobré vědět, že to není GIT ale Git.

Když chci udělat další změny, jak mám postupovat?
Příklad budu ilustrovat na https://github.com/symfony/symfony.
# přidáš si původní repozitář jako další remote
git remote add sf git://github.com/symfony/symfony.git

# stáhneš si změny z původního repozitáře
git fetch sf

# Začleníš změny z původního repozitáře do svého
git merge sf/master
doominick
Profil *
Áno, mockrát děkuji, funguje to.

Nevím proč jsem si myslel, že by to na Gitu / GitHubu mohlo jít nějak snáze. Tohle je potřeba často, nebo se pletu?

Ještě, v tom mém lokálním repositáři to vypadá potom, jako bych ty následné změnu udělal já. Nebude to dělat při pull requestu nějaké potíže?
Majkl578
Profil
Správně bys změny, které se odlišují od hlavní branche (tj. u příkladu výše master symfony/symfony), dělat ve zvláštní větvi (branchi) a následně posílat pull request z ní. Osobně doporučuju pull request vždy posílat oproti aktuální master větvi ve stejném stavu, v jakém je v cíli, kam chci posílat pull request. Tzn. nebudu používat merge, ale reset --hard:

# symfony si pojmenuji logicky jako "symfony": 
$ git remote add symfony git://github.com/symfony/symfony.git

# stáhnu aktuální verzi symfony repositáře
$ git fetch symfony

# ujistím se, že jsem ve své master větvi
$ git checkout master

# resetuji svoji master větev, aby byla totožná se symfony/master
$ git reset --hard symfony/master

# vytvořím novou větev, kde udělám požadované změny
$ git checkout -b bugfix-oprava-neceho

# něco změním a commitnu
$ git commit -am "oprava rozbitého xyz"

# nakonec pushnu do svého repositáře novou branch, ze které následně na githubu vytvořím pull request
$ git push origin bugfix-oprava-neceho

Nemotej dvě věci dohromady, Git a GitHub jsou dvě různé věci. Git je verzovací nástroj, GitHub je hosting Git repositářů.

Vaše odpověď

Mohlo by se hodit

Pokuste se již v titulku uvést název programu související s tématem.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: