Czy możesz wysyłać żądania ściągania z wiersza polecenia na GitHub?

298

Wygląda na to, że musisz wejść w interakcję z github.com, aby zainicjować żądanie ściągnięcia. Czy tak jest

Andrew Johnson
źródło
2
Nie widzę nic w ich API do wykonywania żądań ściągania: develop.github.com
Adam Vandenberg
1
W jakim systemie operacyjnym zamierzasz to zrobić?
IgorGanapolsky
Jak to zrobić w systemie Windows 8 lub 10?
Mathivanan KP
Stworzyłem do tego skrypt bash , jeśli ktoś jest zainteresowany.
mvr

Odpowiedzi:

114

AKTUALIZACJA : Komenda hub jest teraz oficjalnym projektem github i obsługuje także tworzenie żądań ściągania

ORYGINAŁ :

Wydaje się, że szczególnie przydatne jest dodanie do polecenia hub: http://github.com/defunkt/hub lub gem github: http://github.com/defunkt/github-gem

Proponuję zgłosić problem z tymi projektami, które o to proszą. Chłopaki z github są dość responsywni.

kanaka
źródło
8
Github-gem zawarte centrum do tworzenia wniosków zachęcających do wieku: gh pull-request [user] [branch].
Holger Just
6
Czy to działa bez uprzedniego rozwidlenia repozytorium przez Github, tj. Z bezpośredniego klonu repozytorium źródłowego?
Hari Karam Singh
1
@Holger Just i ktokolwiek inny: To tylko tworzy tekst żądania ściągnięcia i nie omija potrzeby używania widelca na Github. Nie znalazłem jeszcze sposobu na obejście tego. Zamierzam wypróbować narzędzie „pullr” opublikowane poniżej. Zobacz tutaj kwestię osób, które proszą o pełne wsparcie ściągania od klejnotu github.
wspólnik
1
do szybkiego polecenia za pomocą hub:hub pull-request -m "message pull request" -b master -h your_branch
Gujarat Santana
Nie wiem, dlaczego nie wspomniano o tym w powyższych dokumentach, ale w celu szybkiego scalenia żądania ściągnięcia sprawdź kasę głównego oddziałuhub merge https://github.com/repo/pull/1
holmberd
53

Git jest teraz dostarczany z podkomendą 'git request-pull' [-p] <start> <url> [<end>]

Dokumenty możesz zobaczyć tutaj

Może się to przydać, ale nie jest to dokładnie to samo, co funkcja GitHub .

Zensaburou
źródło
7
@NathanBasanese Generuje czytelny dla człowieka tekst opisujący żądanie ściągnięcia. Dokumenty git i książka GitHub mówią, że należy wysłać to pocztą e-mail do opiekuna projektu, kogoś z uprawnieniami do pisania na udostępnionym repozytorium (prawdopodobnie github). Opiekun sprawdza wysłany tekst żądania ściągania (zamiast korzystania z internetowego procesu pobierania żądania github). Mogą wykonać git pulladres URL i gałąź wskazane w żądaniu ściągnięcia, aby scalić zmiany w lokalnym klonie i przesłać te zmiany do github.
płyty grzewcze
30

Za pomocą otoki wiersza polecenia Hub możesz połączyć go z git, a następnie możesz to zrobić git pull-request

Ze strony manuala hub:

   git pull-request [-f] [TITLE|-i ISSUE|ISSUE-URL] [-b BASE] [-h HEAD]
          Opens a pull request on GitHub for the project that the "origin" remote points to. The default head of the pull request is the current branch. Both base and head of the pull request can be explicitly given in one  of  the  following  formats:  "branch",  "owner:branch",
          "owner/repo:branch". This command will abort operation if it detects that the current topic branch has local commits that are not yet pushed to its upstream branch on the remote. To skip this check, use -f.

          If TITLE is omitted, a text editor will open in which title and body of the pull request can be entered in the same manner as git commit message.

          If instead of normal TITLE an issue number is given with -i, the pull request will be attached to an existing GitHub issue. Alternatively, instead of title you can paste a full URL to an issue on GitHub.
Flov
źródło
2
Nie wiedziałem o Hubie, jest dostępny przez homebrew: brew install hubTo wydaje się być poprawną odpowiedzią dla użytkowników komputerów Mac.
wfbarksdale,
1
//, Czy jest jakieś miejsce online, do którego można wskazać innym użytkownikom dodatkowe informacje na temat usługi Hub?
Nathan Basanese
19

Człowiek szuka jak ...

man git | grep pull | grep request

daje

git request-pull <start> <url> [<end>]

Ale pomimo nazwy nie jest to, czego chcesz. Według dokumentów:

Wygeneruj żądanie z prośbą do projektu o pobranie zmian w drzewie. Żądanie wydrukowane na standardowym wyjściu rozpoczyna się od opisu gałęzi, podsumowuje zmiany i wskazuje, skąd można je pobrać.

@HolgerJust wspomniał o klejnocie github, który robi to, co chcesz:

sudo gem install gh 
gh pull-request [user] [branch]

Inni wspominali o oficjalnym hubpakiecie github:

sudo apt-get install hub

lub

brew install hub 

następnie

hub pull-request [-focp] [-b <BASE>] [-h <HEAD>]
płyty grzewcze
źródło
3
To generuje podsumowanie oczekujących zmian, nie ma to nic wspólnego z żądaniem ściągnięcia, które jest wysyłane za pośrednictwem Github
Flov
1
@Flov Przez „This” zakładam, że masz na myśli git request-pulllinię. Tak, to ma sens, ale jestem zaskoczony, że git nie ma polecenia do wysyłania e-mailem żądań ściągania, jak robi to github. W końcu git config user.emailjest do niego dostępny. Zwłaszcza z poleceniem o nazwie pull-request.
płyty grzewcze
2
W przypadku Ubuntu wygląda na github-clito , że nie jest już dostępne po Precise ... Otworzyłem pytanie, aby poprosić o alternatywę.
Izaak
7

Skończyłem tworzyć własne , okazało się, że działa lepiej w porównaniu z innymi dostępnymi rozwiązaniami.

https://npmjs.org/package/pullr

samccone
źródło
6
Próbowałem wykonać pullr -n wewnątrz sklonowanego repozytorium. Wystąpił błąd podczas otwierania ... / clonedRepo / undefined / .pullr-token-cache w systemie Windows 7. Może chcesz mieć więcej dokumentacji - na przykład użycia?
BT
5

Ostatnio stworzyłem narzędzie, które robi dokładnie to, co chcesz:

https://github.com/jd/git-pull-request

Automatyzuje wszystko za pomocą jednego polecenia, rozwidlając repozytorium, przesuwając PR itp. Obsługuje również aktualizację PR, jeśli musisz go edytować / naprawić!

jd_
źródło
5

Używam prostego aliasu, aby utworzyć żądanie ściągnięcia,

alias pr='open -n -a "Google Chrome" --args "https://github.com/user/repo/compare/pre-master...nawarkhede:$(git_current_branch)\?expand\=1"'
Nishant Nawarkhede
źródło
2

Oprócz tego github/hub, który działa jako proxy dla Git , teraz (luty 2020) masz cli/cli:

Zobacz „ Zwiększ swoje wrażenia z wiersza poleceń: GitHub CLI jest teraz w fazie beta

Utwórz żądanie ściągnięcia

Utwórz gałąź, wykonaj kilka zatwierdzeń, aby naprawić błąd opisany w problemie, i użyj gh, aby utworzyć żądanie ściągnięcia, aby udostępnić swój wkład.

tworzenie cli / cli pr - https://i1.wp.com/user-images.githubusercontent.com/10404068/74261506-35df4080-4cb0-11ea-9285-c41583009e6c.png?ssl=1

Korzystając z interfejsu GitHub CLI do tworzenia żądań ściągania, automatycznie tworzy widelec, gdy jeszcze go nie masz, i wypycha gałąź i tworzy żądanie ściągnięcia, aby scalić zmianę.


W kwietniu 2020 r .: „ Interfejs GitHub CLI obsługuje teraz żądania automatycznego wypełniania i konfigurację niestandardową

GitHub CLI 0.7 jest dostępny z kilkoma najbardziej pożądanymi ulepszeniami wynikającymi z opinii naszych użytkowników wersji beta.
Od czasu ostatniego wydania, 0.6, istnieją trzy główne funkcje:

  • Skonfiguruj, ghaby używać preferowanego edytora z gh config set editor [editor].
  • Skonfiguruj ghdomyślnie na SSH za pomocą gh config set git_protocol ssh.
    Domyślny protokół Git to HTTPS.
  • Wypełnij automatycznie tytuł i treść żądania ściągnięcia od swoich zatwierdzeń za pomocą gh pr create --fill.

Więc:

gh pr create --fill
VonC
źródło
1

Używałem tego narzędzia wcześniej - chociaż wydaje się, że najpierw musi być otwarty problem, jest on bardzo przydatny i naprawdę usprawnia przepływ pracy, jeśli używasz śledzenia problemów z github. git open-pull, a następnie przesyłane jest żądanie ściągania z dowolnego oddziału lub wybranego. https://github.com/jehiah/git-open-pull

EDYCJA: Wygląda na to, że możesz tworzyć problemy w locie, więc to narzędzie jest dobrym rozwiązaniem.

Andruf
źródło