GitHub: jak udržovat vlastní fork a zároveň přispívat do původního repozitáře rubrika: Programování: Jiné
Řeším teď jaký je správný postup jak si si udělat vlastní form nějaké knihovny na GitHubu, přidat si do ní nějaké nové features a ty poslat jako pull requesty do původního repozitáře. Všechno je jasné až do bodu, kdy potřebuju do svého forku zahrnout změny z původního repozitáře a přidat další features.
Na netu jsme našel několik různých doporučení, které se ale vzájemně vylučují.
Konkrétní příklad:
Uvažujme, že vezmu repozitář na GitHub their/library
a udělám si vlastní fork mine/library
.
Nastavím si prostředí:
#> git clone git@github.com:mine/library.git #> git remote add upstream https://github.com/their/library.git
Přidám si nějakou feature v nové větvi:
#> git checkout -b new-feature ... #> git commit -m "My new feature"
A tu publikuju na origin:
#> git push -u origin new-feature
Z větve new-feature pak vytvořím pull request pro originální repozitář.
Takhle můžu vytvořit několik features (new-feature-2, new-feature-3, ...) a každou poslat jako pull request.
Ve svém forku chci ale mít větev, které obsahuje všechny moje features, kterou budu používat ve svých projektech.
Všechny features si tedy mergnu do masteru:
#> git checkout master #> git merge new-feature #> git merge new-feature-2 #> git merge new-feature-3 #> git push
A teď přijde ta složitá část. V originálním repozitáři mezitím probíhal vývoj, některé moje pull requesty přijali, některé ne. A já teď chci svůj fork aktualizovat, přidat další feature,poslat ji jako pull request a přidat ji do své "produkční" verze v master větvi. Jak to správně udělat?
Branch pro novou feature musíš vytvořít z masteru upstreamu. Pokud bys ji vytvořil z vlastního mastera, logicky se promítnou v pull requestu všechny commity, které na cílové větvi ještě nejsou, to znamená všechny všechny branche, které nebyly začleněny.
Asi nejjednodušší postup:
git fetch upstream git checkout upstream/master git checkout -b new-feature-x
Aktualizace a merge nové větve do masteru by neměl být problém:
git checkout master git pull upstream master git merge new-feature-x
Pro plný přístup na Devel.cz se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře