2013-02-27 9 views
7

Nie mam prawie żadnego pojęcia o git lub github i nie chcę pojęcia. Ale mam tutaj dwuliniową poprawkę do projektu open source. W duchu współpracy i czegokolwiek, chciałbym w to wesprzeć. Jeśli nie kosztuje mnie zbyt wiele bólu.Jak wykonać żądanie pobrania tylko jednej zmiany?

Tak wieki temu rozwidlałem repozytorium, a następnie od czasu do czasu robiłem kilka własnych modyfikacji, a następnie niedawno wprowadziłem tę dwuprzewodową poprawkę. Wszystko zostało sprawdzone w gałęzi głównej i przeniesione z powrotem do miejsca pochodzenia. Teraz chcę utworzyć żądanie ściągnięcia tylko dla dwuliniowej poprawki. Wygląda na to, że github nie zapewnia takiego obiektu.

Z perspektywy czasu, prawdopodobnie powinienem był utworzyć oddzielną gałąź projektu zanim zrobię moją dwuliniową poprawkę, ale a) to jest zbyt wielki ból administracyjny dla dwóch linii kodu i b) Nie wiedziałem, że będę chciałbym wesprzeć poprawkę, gdy ją napisałem. Zresztą teraz jest już za późno.

Mogłem utworzyć nowy oddział, ale nadal zawierałby on wszystkie pozostałe zmiany śmieci. Więc nigdzie mnie to nie zaprowadzi. Chciałbym utworzyć nowy oddział z góry, wyłączając wszystkie moje zmiany lokalne, a następnie ponownie zmienić tylko jedną zmianę. Ale nie widzę żadnego sposobu, aby to zrobić, oprócz zrobienia zupełnie nowego widelca, i nie chcę zupełnie nowego widelca.

W tej chwili moim najlepszym rozwiązaniem jest poddanie się: kod działa teraz dla mnie, to nie jest mój problem. Czy ktoś ma lepszy plan?

+1

'mam prawie żadnego pojęcia o tym, czy git github i nie chcę się clue.' Wciąż przychodzisz tutaj z prośbą o pomoc w tych sprawach? Twoje motywy mogą być zaszczytne, ale na pewno masz jakiś dziwny sposób ich wyrażenia ... opublikowanie adresu URL pastebin na czacie IRC byłoby łatwiejsze. – sjas

+0

Ściśle powiązane pytanie: [Wyślij żądanie ściągnięcia na GitHub tylko za ostatnie zatwierdzenie] (http://stackoverflow.com/questions/5256021/send-a-pull-request-on-github-for-only-latest-commit) – sleske

+0

"Chciałbym utworzyć nowy oddział z branży upstream, wykluczając wszystkie moje zmiany lokalne, a następnie ponowić tylko jedną zmianę." Odpowiedziałeś na własne pytanie. w odniesieniu do twoich literowanych punktów: a) To nie jest za dużo bólu administracyjnego b) teraz wiesz. Polecam usunąć z tekstu wszystkie oparte na opiniach metadane, tytuł postu wystarcza, a odpowiedź poniżej pasuje. –

Odpowiedz

7

Najprostszym sposobem, aby to zrobić, to

  1. ustawić oddział z bieżących zmian i wrócić na górnej gałęzi (twój commit musi opierać się na górnej repo)
  2. utworzyć nowy oddział na wniosek ciągnącej
  3. podnieść popełnić posiadające bug fix
  4. pchnięcie i tworzyć żądania ściągania

co daje

git branch my-changes 
git stash #just in case you have uncommitted changes 
git checkout -b bugfix upstream/master 
git cherry-pick <bugfix-commit-sha> 
git push --set-upstream origin bugfix 

gdzie upstream jest oryginalny rozwidlony Repo

+0

Dzięki, że działa świetnie! Założę to pytanie i mam nadzieję, że odłożę złowrogą godzinę, kiedy będę musiał to zrozumieć przez kolejny rok lub dwa. –

Powiązane problemy