Jak zastosować niezapisane żądania pobierania z innych widelców do mojego widelca?

Projekt na Githubie, którego mam fork, ma nowe żądania pull request, które chcę wciągnąć do mojego forka, których autor jeszcze nie wciągnął.

Czy istnieje prosty sposób, aby zastosować pull request z innych widelców do mojego widelca? Czy coś jeszcze mi umyka?

6 answers

Można to zrobić ręcznie dość łatwo:

  • Dodaj drugi widelec jako pilot twojego repo:

    git remote add otherfork git://github.com/request-author/project.git
    
  • Pobierz commity repo

    git fetch otherfork
    
  • Masz dwie opcje, aby zastosować pull request (jeśli nie chcesz wybrać Wybierz 1.)

    1. Jeśli nie zależy ci na stosowaniu ewentualnych commitów, które zostały dodane między origin a pull request, możesz po prostu zmienić nazwę gałęzi, na której zostało wywołane utworzone

      git rebase master otherfork/pullrequest-branch
      
    2. Jeśli chcesz tylko commity w żądaniu pull, zidentyfikuj ich SHA1 i wykonaj

      git cherry-pick <first-SHA1> <second-SHA1> <etc.>
      
 247
Author: CharlesB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-04 06:01:27

Update: Via Webpage

Możesz to również zrobić poprzez stronę github.

Zakładam, że powinieneś mieć już fork (MyFork) wspólnego repo (BaseRepo), który ma oczekujące żądanie pull z fork (OtherFork), którym jesteś zainteresowany.

  1. przejdź do widelca (OtherFork), który zainicjował żądanie pull, które chcesz dostać do widelca (MyFork)
  2. przejdź do strony pull requests OtherFork
  3. kliknij new pull request
  4. The oczekujące żądania pull powinny być oferowane. Pamiętaj, aby również wybrać odpowiednią gałąź OtherFork. Wybierz po lewej stronie jako widelec bazowy widelec (MyFork) (Ważne ).
  5. teraz opcja View pull request powinna zmienić się na Create pull request. Kliknij tutaj.

Teraz powinieneś mieć oczekujące żądanie pull w swoim forku (MyFork), które możesz po prostu zaakceptować.

 223
Author: Hotschke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 10:21:57

Tak jak Tekkub powiedział wcześniej, możesz po prostu wyciągnąć gałąź bezpośrednio. Większość czasu z GitHub, gałąź jest po prostu "master" na forku żądającego użytkownika projektu.

Przykład: git pull https://github.com/USER/PROJECT/ BRANCH

 66
Author: SciPhi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-07 07:21:07

Jakieś bardziej szczegółowe informacje, które mi pomogły.

Mój .plik git / config dla rozwidlonego repo wygląda tak:
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = false
[remote "origin"]
        url = [email protected]:litzinger/angular-carousel.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
        rebase = true
[remote "source"]
        url = git://github.com/revolunet/angular-carousel.git
        fetch = +refs/heads/*:refs/remotes/source/*
        fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

Następnie uruchom "Git fetch source", który wyświetli wszystkie żądania ściągnięcia z rozwidlonego repo.

 * [new ref]         refs/pull/54/head -> origin/pr/54
 * [new ref]         refs/pull/67/head -> origin/pr/67
 * [new ref]         refs/pull/69/head -> origin/pr/69
 * [new ref]         refs/pull/71/head -> origin/pr/71

A następnie aby scalić w określonym żądaniu pull Uruchom "git merge master origin/pr / 67"

 19
Author: Brian Litzinger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-18 21:50:35

Pull requests dla projektu może pochodzić od wielu różnych autorów (forków) i prawdopodobnie nie chcesz oddzielnego pilota dla każdego forka. Nie chcesz też wprowadzać żadnych założeń dotyczących gałęzi, której autor użył podczas wysyłania żądania pull request, ani tego, co jeszcze może znajdować się w gałęzi master autora. Lepiej więc odwoływać się do żądania pull tak, jak pojawia się ono w repozytorium upstream, a nie tak, jak pojawia się w innych widelcach.

Krok 1:

git remote add upstream <url>

Prawdopodobnie już wykonałem ten krok, ale jeśli nie, będziesz chciał zdalnego zdefiniowanego dla projektu upstream. Adres URL jest adresem URL klonu projektu, który rozwidlałeś. Więcej informacji na stronie Konfigurowanie pilota dla forka i Synchronizacja forka. upstream to nazwa, którą nadajesz pilotowi, i chociaż może to być cokolwiek, {[3] } to konwencjonalna nazwa.

Krok 2:

git pull upstream refs/pull/{id}/head

... gdzie {id} jest numerem pull request. upstream to nazwa pilota, z którego należy pobierać, czyli po prostu " upstream" jeśli wykonałeś dokładnie krok 1. Może to być również adres URL, w którym to przypadku można pominąć krok 1.

Krok 3:

Wpisz komunikat commit dla commit merge. Możesz zachować domyślną wartość, chociaż zalecam podanie ładnego, jednolinijkowego podsumowania z numerem pull request, problemem, który rozwiązuje, i krótkim opisem:

Merge PR#42, fixing VIM-652, support for mapping arbitrary IDEA actions
 14
Author: jbyler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-20 22:37:57

To co bym zrobił to:

git checkout master
git remote add #NAME# #ADDRESS TO REPO#
git fetch #USERNAME#
git checkout -b test_fork
git rebase #NAME#/#BRANCH#

Połączyłem teraz zmiany w gałąź testową o nazwie test_fork. Żeby wszelkie zmiany nie zabrudziły mojego drzewa.

Opcjonalnie możesz użyć cherry-pick, jak opisano powyżej, aby wybrać konkretny commit, jeśli jest to bardziej pożądane.

Szczęśliwych podróży:)

 9
Author: MindTooth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-11 10:31:34