2012-12-11 11 views
11

Jak wyciągnąć zmiany z rodzica widelca w Git, w szczególności w projekcie skonfigurowanym github?Wyciąganie zmian z rodzica widelca w Git

Załóżmy na przykład, że rozwidlałem http://github.com/originaluser/originalproject w http://github.com/myuser/myproject. Nie planuję, aby myproject był stałym rozwidleniem, ponieważ chcę tylko utrzymywać gałąź "dev", aby przetestować niektóre funkcje eksperymentalne, a następnie połączyć ją z powrotem w oryginalny projekt.

W związku z tym, ilekroć zatwierdzenia są dokonywane w oryginalnym projekcie, chcę je usunąć i połączyć z myproject. Jednak chcę też móc przesuwać zmiany do myproject, ale jeszcze nie natychmiast utworzyć żądanie ściągnięcia, aby je scalić w oryginalny projekt, dopóki moja gałąź nie zostanie ukończona i przetestowana. Jaki jest najlepszy sposób na zrobienie tego?

Edytuj: Domyślnie, gdy tworzę lokalny checkout/widelec mojego widelca github dla lokalnego rozwoju, a następnie wciskam/ciągnąłem zmiany, te zmiany wpływają tylko na mój osobisty widelec. Nigdy nie dostaję zmian od oryginalnego projektu. Jak to naprawić?

Przepraszamy za niepoprawną terminologię git.

+0

Opisałeś, co chcesz robić, co jest w porządku, ale nie widzę tutaj żadnego problemu. Czy to nie działa? –

+0

@GregHewgill, Nie. Zmieniłem moje pytanie, aby wyjaśnić mój problem. – Cerin

Odpowiedz

8

Możesz dodać repozytorium nadrzędne (upstream) jako inną zdalną gałąź. Coś jak

git remote add upstream ... 

i wtedy można po prostu git sprowadzić zobaczyć jakieś zmiany, a następnie zmieniają bazę/scalić ... cokolwiek.

+1

Jak to zrobić? – Cerin

+2

Sklonuj widelec (myuser/myproject), umieść w nim cd, a następnie wpisz git remote add up https://github.com/originaluser/originalproject.git, a następnie wpisz git fetch. Następnie powinieneś mieć master (twój lokalny master branch), origin/master (twój master master) i na końcu upstream/master (master projektu originalproject), z którego możesz pobrać zmiany do swojego repozytorium. –

+0

Musisz również określić nowy pilot na 'git fetch', w przeciwnym wypadku nie pobierze go:' git fetch upstream' robi lewę. – Kev