Jak mogę przyczynić się do kodu innego w GitHub? [Zamknięte]

231

Chciałbym przyczynić się do pewnego projektu w GitHub . Czy powinienem to rozwidlać ? Rozgałęziać to? Co jest zalecane i jak to zrobić?

wizztjh
źródło
61
Kolejne niedorzeczne zakończenie
Stephen
4
Napisałem bardziej szczegółowy przewodnik na temat przyczyniania się do Concrete5 na Github, ale proces ten może mieć zastosowanie do każdego projektu. Sprawdź to .
Joe Meyer,
7
Naprawdę nie rozumiem, jak to „nie jest konstruktywne”. Same głosy i poglądy stanowią dowód, że jest to popularne pytanie, na które ludzie chcą odpowiedzieć.
Ian
1
być może, przy wystarczającej większości głosów, uprzednio zamknięte pytania powinny mieć możliwość ponownego wskrzeszenia i pozwolić ludziom ponownie włączyć się w wątek.
Peter Teoh

Odpowiedzi:

180

Idealnie ty:

  1. Rozwidlaj projekt
  2. Dokonaj co najmniej jednego dobrze skomentowanego i czystego zatwierdzenia do repozytorium. Możesz utworzyć nowy oddział tutaj, jeśli modyfikujesz więcej niż jedną część lub element.
  3. Wykonaj żądanie ściągnięcia w interfejsie internetowym github.

jeśli jest to nowe żądanie funkcji, nie zaczynaj najpierw kodowania. Pamiętaj, aby opublikować problem w celu omówienia nowej funkcji.

Jeśli funkcja jest dobrze omawiana i istnieje +1 lub właściciel projektu ją zatwierdził, przypisz problem do siebie, a następnie wykonaj powyższe kroki.

Niektóre projekty nie będą korzystać z systemu żądania ściągania. Skontaktuj się z autorem lub listą mailową, aby dowiedzieć się, jak najlepiej odzyskać kod z powrotem do projektu.

Yann Ramin
źródło
4
Szczegóły dotyczące rozwidlania i ściągania
Gabriel Grant,
1
Tak, wyciągnij prośbę. Żądanie scalenia to genialna terminologia.
Yann Ramin,
2
@MariusKavansky jest na odwrót! Gdy już wiesz, nad czym pracować, tylko Ty możesz wnieść swój wkład :)
hashbrown
po tym, jak włączyłem się w projekt open source. Myślę, że lepszym pomysłem jest otwarcie problemu w celu omówienia nowej funkcji, jeśli jest to nowa funkcja. Jeśli jest to dobrze omówiona funkcja lub problem, powinieneś przypisać ten problem do siebie, a następnie wykonaj powyższe kroki. To moje 2 centy.
wizztjh
@ Hashbrown, pyta, gdzie jest „lista” żądanych funkcji do tej pory. Te funkcje, które są już wymagane i dają +1.
Pacerier
31

Aby dodać do odpowiedzi Yanna , po rozwidleniu projektu możesz rozwinąć dowolną gałąź (nową lub oryginalną)

Pamiętaj by:

VonC
źródło
1
czy możesz dodać szczegóły lub linki do drugiego punktu (gałąź rebasingu) ?
JorgeArtware
1
@JorgeArtware Zaktualizowałem odpowiedź kilkoma linkami ilustrującymi rebase.
VonC
@VonC Zadaję pytanie tutaj, ale jeśli uważasz, że jest to konieczne, zrobię z niego zupełnie nowe pytanie. Dlaczego miałbym bazować zamiast scalać, oprócz posiadania „prostej historii”? Innymi słowy, oto, co robię, gdy biorę udział w niektórych projektach (po scaleniu PR z mojej gałęzi funkcji w celu opracowania i opanowania gałęzi): to git checkout master; git pull;samo dla rozwoju (gdzie moja gałąź funkcji została najpierw scalona) Różnicę, o której mogę myśleć po przeczytaniu „pull vs pull --rebase” i „merge vs rebase” to tylko płaska historia. Coś jeszcze głębszego?
linuxbandit
@grasshopper w kontekście „wkładu” (kontekst tej strony), zawsze chcesz bazować swoje lokalne zatwierdzenia na zaktualizowanych gałęziach przed wypchnięciem: dzięki temu wspomniany wkład będzie trywialny do zintegrowania przez opiekuna z oryginalną gałęzią projektu. W kontekście twojego pytania, gdzie twój PR został zaakceptowany, z pewnością możesz scalić zamiast bazy, aby zaktualizować istniejące gałęzie.
VonC
(Przepraszam, zmieniłem nazwę użytkownika właśnie teraz, aby odzwierciedlić mój github) - Dziękuję @VonC, więc wszystkie sugestie, które czytałem na temat bazy, mają zastosowanie przed PR, mają sens. Czy w celu odzwierciedlenia zaakceptowanego i scalonego PR w moim lokalnym repozytorium jest jakaś powszechna praktyka (rebase zamiast scalania), czy mogę cokolwiek zrobić? Co jednak, jeśli prześlę kolejny PR?
linuxbandit
15

Aby dodać do odpowiedzi Yan i VonC, jest to dobry zasób od samych github: http://help.github.com/forking/

Pamiętaj również, aby spojrzeć na prawy pasek boczny pod nagłówkiem „współpracujący”.

brycemcd
źródło
10

Jest tutaj świetne wideo z Railscast , które przeprowadzi Cię przez ten proces. Zawiera również szereg dobrych wskazówek, takich jak pokazanie, w jaki sposób określić, nad którą gałęzią chcesz pracować, przyczyniając się, używając testów, submodułów itp.

Chociaż ten screencast koncentruje się przede wszystkim na programistach Railsów, większość informacji jest ważna dla udziału w każdym projekcie open source.

Migawka
źródło
4

Github ma wiele sposobów współpracy przy projekcie. Modelem najczęściej używanym w projekcie jest model żądania ściągania. Rozpocząłem projekt, aby pomóc ludziom składającym pierwsze żądanie ściągnięcia z GitHub. Możesz zrobić praktyczny samouczek, aby zrobić swój pierwszy PR tutaj

Przepływ pracy jest prosty jak

  • Rozwidlaj repo w github
  • Sklonuj repozytorium do swojego komputera
  • Utwórz oddział i wprowadź niezbędne zmiany
  • Wrzuć zmiany do swojego widelca na GitHub git push origin branch-name
  • Przejdź do swojego widelca na GitHub, aby zobaczyć Compare and pull requestprzycisk
  • Kliknij na nią i podaj niezbędne szczegóły
Sudo Bangbang
źródło
2

Techniczny przepływ pracy

Sugerowałbym następujący przepływ pracy:

  1. Rozwidlaj repozytorium (przez interfejs sieciowy GitHub: przycisk „Widelec”)
  2. W rozwidlonym repozytorium skopiuj adres URL
  3. Klonuj (w linii poleceń)

    git clone <url-from-your-workspace>

  4. Wejdź do właśnie utworzonego katalogu i utwórz gałąź

    cd <directory> git checkout -b <branchname>

  5. Teraz wprowadź zmiany

  6. Możesz utworzyć jeden lub więcej zatwierdzeń po każdej zmianie:

    commit -a

  7. Po zakończeniu naciśnij zmiany

    git push origin <branch>

  8. W linii poleceń powinieneś zobaczyć adres URL do utworzenia PR . Odwiedź adres URL i kliknij przycisk, aby utworzyć PR.

  9. Jeśli nie, odwiedź repozytorium w przeglądarce, a zobaczysz przycisk do utworzenia żądania ściągnięcia

Otóż ​​to.

Zasadniczo rozwidliłeś repozytorium do swojego obszaru roboczego, utworzyłeś nową gałąź i wypchnąłeś tę nową gałąź.

Jeśli później utworzysz więcej PR z tego samego sklonowanego repozytorium, powinieneś zsynchronizować (uzyskać najnowsze zmiany z oryginalnego repozytorium) przed utworzeniem kolejnej gałęzi dla innego PR:

git checkout master
git remote add upstream <url-of-original-repo>
git pull upstream master

Inne uwagi:

  • projekt może mieć Wytyczne dotyczące wkładu: poszukaj pliku CONTRIBUTING.rst lub .md
  • możesz postępować zgodnie ze wskazówkami dotyczącymi kodowania dla projektu
  • możesz najpierw przedstawić swój pomysł jako problem
  • możesz zajrzeć do zakładki Pull Requests dla projektu i sprawdzić, czy jest otwarty PR, scalony PR

Te sugestie są tutaj, aby uchronić cię przed trudem umieszczenia pracy w PR, który nie zostanie scalony. Jeśli w projekcie jest aktywność, a PR zostanie scalony, to dobry znak. Jeśli istnieją Wytyczne dotyczące wkładu, zastosuj się do nich.

Zawsze bądź uprzejmy. Pamiętaj, że opiekunowie projektu nie są w żaden sposób zobowiązani do scalenia twojego PR. Czy masz coś cennego do dodania do projektu?

Sybille Peters
źródło
1
Bardzo szczegółowy proces (bardziej precyzyjny niż moja 9-letnia odpowiedź). Pozytywne.
VonC