Как оформить PR с форка? - PullRequest
1 голос
/ 17 июня 2020

Я использую github для размещения некоторых проектов, и кто-то разветвил мое репо и отправил PR, мне никогда раньше не приходилось тестировать PR в форке. Как я могу проверить ветку и протестировать ее? Могу я как-нибудь втянуть это в свое репо? Или мне проверить вилку и таким образом протестировать ветку?

Ответы [ 3 ]

2 голосов
/ 17 июня 2020

Есть несколько разных способов, но я go расскажу, что бы я сделал в этой ситуации

git remote add <whatever you want the remote to be called> <link to the fork>

Вот документация . Это позволит вам добавить и извлечь удаленную ветку из вилки. При просмотре PR в описанном вами рабочем процессе я обычно выполняю git clean -dfx (предупреждение: это очень интенсивная очистка, которая избавляет вас от неустановленной работы), git remote add <whatever you want the remote to be called> <link to the fork> и git checkout <branch name>.

Если он уже в вашем репо, вы можете увидеть его с помощью git branch -a и просто проверить его, как и в противном случае.

2 голосов
/ 17 июня 2020

В основном "восходящий" репозиторий GitHub обеспечивает прямой доступ к ветвям PR форков (только для чтения), так что вы можете получить данный PR и протестировать соответствующий код после указания соответствующей ссылки, pull/ID/head .

С этой целью я часто использую следующий псевдоним (который может использоваться как для начальной выборки , затем последующих выборок , если PR был обновлено - тем самым перезаписывая локальную ветвь pr/ID):

$ git pr
Usage: git pr <id> [<remote>]  # assuming <remote>[=origin] is on GitHub

$ git pr 101  # fetch PR #101 from origin -> branch pr/101

$ git pr 101 upstream # fetch PR #101 from upstream -> branch pr/101

Вот однострочное определение, затем расширенная форма:

$ git config --global alias.pr '!f() { if [ $# -lt 1 ]; then echo "Usage: git pr <id> [<remote>]  # assuming <remote>[=origin] is on GitHub"; else git checkout -q "$(git rev-parse --verify HEAD)" && git fetch -fv "${2:-origin}" pull/"$1"/head:pr/"$1" && git checkout pr/"$1"; fi; }; f'

# git config --global alias.pr '!f() { if [ $# -lt 1 ]; then
  echo "Usage: git pr <id> [<remote>] # assuming <remote>[=origin] is on GitHub";
  else git checkout -q "$(git rev-parse --verify HEAD)" &&
  git fetch -fv "${2:-origin}" pull/"$1"/head:pr/"$1" &&
  git checkout pr/"$1";
  fi; }; f'

Обратите внимание, однако, что вы не можете напрямую pu sh в эти специальные ветки.

Если вы когда-нибудь захотите напрямую изменить PR (commit + force-pu sh) в качестве сопровождающего, вам следует добавить вилку как другую remote , как предложено @ yes-siz (при условии автор PR разрешил такой доступ при открытии своего PR ).

1 голос
/ 17 июня 2020

PR находится в вашем репо. В этом и весь смысл архитектуры fork-and-PR. merge , то да, ветку с вилки выдернешь. К счастью, GitHub сделает это за вас.

...