Jak wykonać pull request w GitHub tylko z najnowszym zatwierdzeniem w gałęzi master mojego rozwidlonego repozytorium

Rozwidlałem repozytorium na GitHubie. Wprowadziłem kilka zmian i poprosiłem o ściągnięcie.

Teraz wprowadziłem kilka innych zmian i chcę wykonać nowe żądanie pull request, ale na ekranie podglądu przed wykonaniem żądania pull pokazuje również stare commity (te, które zostały już zaakceptowane).

Jak wybrać tylko najnowszy commit w gałęzi głównej mojego rozwidlonego repozytorium, aby móc wykonać pull request tylko z tym commitem?

Author: Felipe Brahm, 2011-04-06

2 answers

Ta odpowiedź od współpracownika naprawiła mój problem:

git checkout -b NEW_BRANCH_NAME LAST_COMMIT_NAME_BEFORE_THE_ONE_WANTED
git cherry-pick COMMIT_NAME_WANTED
git push origin NEW_BRANCH_NAME

Następnie na Githubie możesz wykonać pull request dla nowej gałęzi, którą utworzyłeś.

UPDATE

Zapytałem i odpowiedziałem na to pytanie, Kiedy zacząłem pracować z Gitem. Teraz, gdy Wiem więcej na ten temat, chciałbym rozszerzyć tę odpowiedź.

Podczas pracy z forkiem prawdopodobnie chcesz go aktualizować w odniesieniu do oryginalnego repo. Więc to będą kroki, które podążam dzisiaj:

git remote add upstream GIT_URL_OF_THE_ORIGINAL_REPO

Teraz masz odniesienie o nazwie upstream, które wskazuje na to repo. Domyślnie powinieneś mieć również inną o nazwie origin, która wskazywałaby na Twój fork w tym przypadku. upstream i origin jest tak, jak ludzie zwykle nazywają te odniesienia, ale możesz użyć dowolnej nazwy, którą chcesz.

Teraz musisz pobrać najnowsze zmiany:

git fetch upstream

Następnie, jeśli chcesz zaktualizować widelec o zmiany z upstream zrobisz to:

git checkout master //checkout your master branch
git merge upstream/master //merge changes from the master branch in upstream into the branch you checked out (master)
git push origin master //if you want to push your updated master to your remote fork

Teraz, aby odpowiedzieć na oryginalne pytanie, co bym dzisiaj zrobił, gdybym chciał zgłosić nowy PR, brzmiałoby :

git fetch upstream //get the latest changes from the original repo
git checkout -b my_new_feature upstream/master //create a new branch, starting from the master in the original repo
git cherry-pick WHATEVER_COMMIT_I_WANT //select the commit I want and add it to this new branch
git push origin my_new_feature //push a new branch to my fork

Wtedy prosiłbym o nowy PR dla my_new_feature oddziału.

Możesz zastąpić git cherry-pick WHATEVER_COMMIT_I_WANT tylko modyfikacją / dodaniem pliku, a następnie wykonaniem git add FILENAME, git commit -m "Fixing some stuff".

 47
Author: Felipe Brahm,
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-11-20 18:18:42

Prawdopodobnie można umieścić commity w oddzielnej gałęzi (rozgałęzienie przed pierwszym zestawem commitów), zakładając, że nie są one powiązane z pierwszymi commitami. Wtedy oddzielna gałąź może być celem żądania pull i będzie zawierać tylko drugi zestaw zmian.

 4
Author: Wes Hardaker,
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
2011-04-06 05:36:34