Żądanie pociągnięcia bez rozwidlenia?

105

Oto kroki tworzenia kodu z tematu „ Jak mogę współtworzyć kod innych osób w serwisie GitHub?

  1. Rozwidl projekt
  2. Wykonaj jeden lub więcej dobrze skomentowanych i czystych zatwierdzeń do repozytorium. Możesz utworzyć nową gałąź, jeśli modyfikujesz więcej niż jedną część lub element.
  3. Wykonaj żądanie ściągnięcia w interfejsie internetowym github.

Czy można wykonać żądanie ściągnięcia bez rozwidlania repozytorium?

To dość smutne, gdy widzę ponad 20 repozytoriów na moim koncie, które zostały rozwidlone dla niektórych żądań ściągnięcia. Nie mają wtedy żadnej aktywności i zero gwiazdek / zwolenników. Wygląda na to, że właśnie kopiuję czyjś kod na czarny dzień.

Jaspis
źródło
Dlaczego miałbyś chcieć?
3
Dobre pytanie. Nie jest również jasne, czy zaktualizować te 20 repozytoriów do oryginału (lub je usunąć).
Corey Alix

Odpowiedzi:

95

Jeśli nie masz dostępu do tworzenia gałęzi w tym repozytorium, nie ma możliwości utworzenia żądania ściągnięcia bez rozwidlania .

Ryan Bigg
źródło
8
Czy możesz wyjaśnić, jak utworzyć żądanie ściągnięcia, jeśli MASZ dostęp do oddziałów w tym repozytorium?
bolinfest
13
GitHub ma dobry przewodnik na ten temat: help.github.com/articles/creating-a-pull-request
Ryan Bigg
2
Tylko przypomnienie o czymś, co może nie być tak jasne dla wszystkich. Musisz utworzyć rozwidlenie dla każdego repozytorium, do którego się wnosisz ... ale tworzenie gałęzi w twoim forku pozwala ci pracować o jeden więcej niż jeden PR naraz dla repozytorium nadrzędnego. Nie potrzebujesz 20 forków z tego samego repozytorium, aby wnieść wkład w 20 PR.
JulioHM
24

Po zaakceptowaniu żądań ściągnięcia możesz bezpiecznie usunąć repozytorium .

Następnie po prostu sklonuj bezpośrednio z oryginalnego repozytorium.

Jeśli masz inne żądania ściągnięcia do wykonania, powinieneś zrobić je w ich własnej gałęzi, co oznacza, że ​​możesz bezpiecznie usunąć gałąź, którą stworzyłeś, aby zarządzać zaakceptowanym żądaniem ściągnięcia (jak w " Moje żądanie ściągnięcia zostało scalone, co zrobić następny? ”)

VonC
źródło
2
Do Twojej wiadomości, github niedawno dodał przycisk do połączonych żądań ściągnięcia, aby ułatwić (i intuicyjnie) usuwanie gałęzi żądań ściągnięcia: github.com/blog/1335-tidying-up-after-pull-requests
David M,
10

Z definicji żądanie ściągnięcia obejmuje rozwidlenie, chyba że masz dostęp do repozytorium docelowego. Możesz jednak zrobić kilka rzeczy:

  1. Jeśli nie masz dostępu popełnić utworzyć oddział i na swój wniosek ściągania przeciwko nowej gałęzi.
  2. Opublikuj poprawkę w treści problemu. To naprawdę nie jest sposób GitHub, ale z pewnością działa.
  3. Rozwidlaj repozytorium, utwórz żądanie ściągnięcia, a następnie usuń rozwidlenie po scaleniu lub odrzuceniu żądania ściągnięcia.

Jeśli po prostu próbujesz uniknąć przechowywania repozytoriów, których nie używasz aktywnie, osobiście sugeruję opcję nr 3. Trzyma się akceptowanego przepływu pracy GitHub bez zaśmiecania pulpitu nawigacyjnego.

Todd A. Jacobs
źródło
Prawdopodobnie najlepiej ująć to tutaj: 4. Utrzymuj drugie konto Github tylko po to, aby poradzić sobie z tymi scenariuszami ściągania żądań i zapomnienia. Nie ma znaczenia, czy na tym koncie jest 20 nieaktywnych repozytoriów, ponieważ nie jest to konto główne.
tanius
7

github obsługuje model wspólnego repozytorium

Model współdzielonego repozytorium jest bardziej rozpowszechniony w przypadku małych zespołów i organizacji współpracujących przy projektach prywatnych. Wszyscy mają dostęp w trybie push do jednego współużytkowanego repozytorium, a gałęzie tematów służą do izolowania zmian.

Żądania pull są szczególnie przydatne w modelu Fork & Pull, ponieważ zapewniają sposób powiadamiania opiekunów projektu o zmianach w Twoim forku. Jednak są one również przydatne w modelu współdzielonego repozytorium, gdzie są używane do zainicjowania przeglądu kodu i ogólnej dyskusji na temat zestawu zmian przed scaleniem z główną gałęzią.

Ya Zhuang
źródło
5
Zwróć uwagę, że nie wyjaśnia to, jak utworzyć żądanie ściągnięcia w tym modelu.
bolinfest
0

Nadal potrzebujesz tego jednowierszowego: hub fork;git push -u $GIT_USER HEAD;hub pull-request

Anona112
źródło