Jak zmienić gałąź podstawową żądania ściągnięcia?

79

Utworzyłem żądanie ściągnięcia projektu na GitHub do określonej zdalnej gałęzi. Po pewnym czasie zdalna gałąź została usunięta.

Jak mogę zmienić żądanie ściągnięcia, aby wskazywało inną gałąź (konkretnie master)?

Marcos Vinícius da Silva
źródło
3
Poproszono również na: github.com/isaacs/github/issues/18 , wiadomość wysłana do GitHub i otrzymano standardowe „dodamy do naszej wewnętrznej odpowiedzi bugtrackera”.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Odpowiedzi:

79

Zaktualizowano: jak zauważa Michael poniżej, jest to teraz możliwe :

Możesz teraz zmienić gałąź podstawową otwartego żądania ściągnięcia. Po utworzeniu żądania ściągnięcia można zmodyfikować gałąź podstawową, aby zmiany w żądaniu ściągnięcia były porównywane z inną gałęzią. Zmieniając gałąź podstawową oryginalnego żądania ściągnięcia zamiast otwierać nową z prawidłową gałęzią podstawową, będziesz w stanie zachować cenną pracę i dyskusję.

Kliknij Editprzycisk obok tytułu żądania ściągnięcia, aby wyświetlić selektor gałęzi podstawowej.

Animowany przykład zmiany gałęzi podstawowej żądania ściągnięcia.


Stara odpowiedź

Nie możesz. Po prostu wyślij nowe żądanie ściągnięcia.

Bursztyn
źródło
10
od razu do rzeczy, ale nie do końca prawda - zobacz odpowiedź.
Tom
7
Poleganie na nieudokumentowanej (i potencjalnie niezamierzonej) funkcjonalności API jest receptą na smutek w przyszłości.
Amber
15
Nikt nie mówił nic o poleganiu na nieudokumentowanej funkcjonalności API. To pytanie dotyczy rozwiązania jednorazowego problemu, a nie stałego wspieranego rozwiązania. Niezależnie od tego stwierdzenie, że „nie możesz” jest po prostu nieprawdą.
Tom
5
Tak czy inaczej, nieudokumentowane API jest teraz zepsute (zobacz komentarze do drugiej odpowiedzi) i to jest dość smutne.
dequis
2
Od 15.08.2016 możesz. Zobacz odpowiedź Michaela.
maliayas
35

Chociaż nie jest to udokumentowane, możesz to zrobić za pomocą GitHub REST API.

Korzystanie z API jest wyjaśnione w tej odpowiedzi , ale zasadniczo możesz wysłać żądanie REST, takie jak to:

$ curl --user "tom" \
       --request PATCH \
       --data '{"issue": "15", "head": "tom:new-branch", "base": "master"}' \
       https://api.github.com/repos/fred/fabproj/pulls

Spowoduje to zmianę żądania ściągnięcia zawartego w wydaniu 15 w fred/fabprojrepozytorium, aby używać new-branchgałęzi na tom/fabprojrozwidleniu.

Edycja: Uwaga: zgodnie z komentarzami powyższe dotyczy tylko dołączania nowego żądania ściągnięcia do istniejącego problemu .

Tomek
źródło
1
Nie mogłem zmusić go do pracy. Narzekał, że pole issuema nieprawidłową wartość, co może sugerować, że nie można już zmieniać już utworzonych żądań ściągnięcia. Wstyd.
mxcl
1
Czy na pewno masz prawidłowe wywołanie interfejsu API? O ile wiem, powinno to nadal działać i jest (trochę) udokumentowane. Wejdź na developer.github.com/v3/pulls (i wyszukaj „Utwórz żądanie ściągnięcia”, a następnie spójrz na „Alternatywne dane wejściowe”)
Tom,
14
Wypróbowałem to dzisiaj ponownie i mogę potwierdzić, że już nie działa. Będę dalej badać interfejsy API REST w nadziei, że odkryję inny sposób zrobienia tego.
Tom
1
Zgodnie z dokumentacją programisty typ żądania powinien być bt PATCH. Inną rzeczą jest to, że modyfikacja głowy / bazy nie jest obecnie obsługiwana. Ref: developer.github.com/v3/pulls/#update-a-pull-request
Shekhar
4
Hej Jian, jak Tom wspomniał w komentarzach z 13 grudnia 2012 roku, to (niestety!) Już nie działa ... a szkoda, bo mogłem go dziś dobrze wykorzystać, ale niestety!
pvandenberk
19

Od 15.08.2016 jest to teraz możliwe natywnie przez Github :

Możesz teraz zmienić gałąź podstawową otwartego żądania ściągnięcia. Po utworzeniu żądania ściągnięcia można zmodyfikować gałąź podstawową, aby zmiany w żądaniu ściągnięcia były porównywane z inną gałęzią. Zmieniając gałąź podstawową oryginalnego żądania ściągnięcia zamiast otwierać nową z prawidłową gałęzią podstawową, będziesz w stanie zachować cenną pracę i dyskusję.

Michael Clifford
źródło
jak to działa to wciskamy edytuj tytuł, a następnie pojawia się przycisk "baza:" gotowy do zmiany.
AnneTheAgile
2

Mógłbym zmienić gałąź docelową. Prawdą jest, że nie możemy edytować nazwy oddziału docelowego w PR. Ale sztuczka polega na zmianie nazwy gałęzi na inną i zmianę nazwy gałęzi docelowej na obecną już w PR.

Przykład: Mój PR ma nazwę typu „dev-4.9”. Jest jeszcze jedna gałąź, która nazywa się „qa-4.9”. Chcę tylko, żeby "qa-4.9" było docelową gałęzią PR. Kroki: 1 1) Zmień nazwę gałęzi „dev-4.9” na inną „original-dev-4.9”

git checkout dev-4.9
git branch -w original-dev-4.9
git push origin original-dev-4.9

2) Zmień nazwę gałęzi "qa-4.9" na "dev-4.9".

git checkout qa-4.9
git branch -w dev-4.9
git push origin dev-4.9 -f (force push to write entire branch to reflect dev-4.9)

3) Odśwież adres URL PR i zobacz zmiany w qa-4.9 tam odzwierciedlone.

Sateesh
źródło
1

Zamiast tracić wszystkie komentarze związane z PR do usuniętego oddziału:

  1. utwórz gałąź ponownie lokalnie o tej samej nazwie i takiej samej zawartości, jaką ma gałąź, do której chcesz się scalić;
  2. wypchnij tę gałąź, aby odtworzyć gałąź zdalną; i wtedy
  3. ponownie otwórz PR do oddziału.

Na przykład masz żądanie PR do branch1, które jest usuwane. Chcesz teraz scalić, aby opanować i zachować komentarze dotyczące istniejącego PR:

  1. git checkout master
  2. git pull
  3. git checkout -b branch1
  4. git push
  5. otwórz ponownie swój PR w oddziale 1
  6. po scaleniu do branch1, scal do master.

To trochę dziwaczne, ale znacznie lepsze niż niszczenie wielu komentarzy.

William Zeller
źródło
Nie podążyłem za tym, aby zacząć, więc tylko po to, aby wyjaśnić innym czytelnikom (albo> = głupi jak ja), jeśli masz kontrolę nad repozytorium, do którego został przesłany Twój PR. Szukałem sposobu na zaktualizowanie mojego PR, które przesłałem do projektu open source, nad którym nie kontroluję.
rtpHarry
0

Github obsługuje to teraz. Przycisk edycji na prawym końcu PR.

julian joseph
źródło
-2

W teorii...

powinieneś używać Github API .

przykład: edytuj żądanie ściągnięcia z curl

curl --user "your_github_username" \
     --request PATCH \
     --data '{"title":"newtitle","body":"newbody",...}' \
     https://api.github.com/repos/:owner/:repo/pulls/:number

szczegółową listę danych można znaleźć w dokumentacji dewelopera na github

przykład: zmień nazwę mojego żądania ściągnięcia

curl --user "jeremyclement" \
     --request PATCH \
     --data '{"title":"allows the control of files and folders permissions."}' \
     https://api.github.com/repos/Gregwar/Cache/pulls/9

ale w praktyce ...

wydaje się, że pola head/labeli head/refnie są edytowalne. Na razie jedynym rozwiązaniem wydaje się być Amber

hexaJer
źródło
Co to dodaje do obecnych odpowiedzi?
Léo Lam
Potwierdza reakcję Amber wbrew Tomowi.
hexaJer
2
Co potwierdza, że ​​ta odpowiedź wcale nie jest potrzebna. To nic nie dodaje do aktualnych odpowiedzi. W odpowiedzi Toma już widnieje informacja, że ​​już nie ma zastosowania, a komentarze również na to wskazują.
Léo Lam