Я хотів би клонувати сховище з GitHub. Проблема в тому, що я не хочу головної галузі; Я хочу, щоб версія в цьому непідтвердженому запиті на виклик .
Чи можна мені клонувати версію запиту на витяг замість основного сховища?
Я хотів би клонувати сховище з GitHub. Проблема в тому, що я не хочу головної галузі; Я хочу, щоб версія в цьому непідтвердженому запиті на виклик .
Чи можна мені клонувати версію запиту на витяг замість основного сховища?
Відповіді:
Ви можете клонувати потрібну гілку, скориставшись -b
опцією та для запиту на виклик:
git clone https://github.com/user_name/repo_name.git -b feature/pull_request_name dir_name
У вашому випадку гілка, яку ви хочете клонувати, є вихідною гілкою запиту pull ( feature/mongoose-support
):
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support ./mongoose-support
Найпростіший спосіб зробити це так:
git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD
Тепер ви будете в новій гілці, яка знаходиться в стані запиту на виклик.
Ви можете налаштувати псевдонім, запустивши
git config --global alias.pro '!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'
Тепер ви можете перевірити будь-який PR, запустивши git pr <pr_number>
, або git pr <pr_number> <remote>
якщо ваш пульт дистанційного керування не названий origin
.
.gitconfig
файл під [alias]
: pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f"
. Таким чином я просто набираю, git pr upstream 62
і наступне, що я знаю, я перебуваю на новій гілці PR # 62 з верхової лінії! Якщо ви завжди користуєтесь, origin
ви можете жорстко кодувати його замість $1
, але це змінюється для мене.
co
git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH
наприклад:
$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611
Внесіть зміни, введіть їх, натисніть та відкрийте новий PR зі свого вила на GitHub
Ви можете слідувати вказівкам у цій суті, щоб мати змогу перевірити пульт безпосередньо без необхідності з'ясувати їх сховище та відділення.
Приклад використання
Для одного з моїх проектів (github3.py) у мене є наступне github3.py/.git/config
[remote "github"]
fetch = +refs/heads/*:refs/remotes/github/*
fetch = +refs/pull/*/head:refs/remotes/github/pr/*
url = git@github.com:sigmavirus24/github3.py
Перший рядок - це те, що є стандартним для кожного пульта, за винятком того, що github
замінюється ім'ям пульта. Це означає, що віддалені голови (або голови гілок на цьому сервері) "відображаються" на локальні віддалені пристрої з префіксом github/
. Так що, якщо я git fetch github
і мав філія на GitHub , що не було вже помітили , локально на моїй машині, було б завантажити гілку , і я міг би переключитися на нього так: git checkout -t github/branch_name
.
Другий рядок робить те ж саме, але він робить це для запитів на витяг замість стандартних гілок git. От і бачите refs/pull/*/head
. Він отримує голову кожного запиту на витяг на GitHub і відображає його github/pr/#
. Тож якщо хтось надсилає запит на витяг, і він має номер 62 (наприклад), ви зробите:
git fetch github
git checkout -t github/pr/62
І тоді ви б опинилися на локальній гілці під назвою pr/62
(припустимо, що її ще не було). Це приємно і означає, що вам не доведеться слідкувати за віддаленими або гілками інших людей.
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
документа суті.
git fetch github
то можете робити git co -t github/pr/#
. Це заважає вам копіювати та вставляти віддалену URL-адресу, з'ясовувати назву гілки тощо. Потім ви отримаєте добре названі, стислі та точні назви гілок без зайвих клопотів. Але я розумію, це може здатися непосильним.
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
Як я можу отримати безперебійний запит на витяг для гілки, якою я не володію?
git pull
створює злиття в поточну гілку; зазвичай для PR потрібно просто git fetch
отримати оригінальний авторський код (він доступний як FETCH_HEAD). Якщо ви хочете злиття, варто також згадати pull/2/merge
(замість цього pull/2/head
) - це змушує GitHub дати точну комісію злиття, яка відбудеться, якщо ви натиснули кнопку [Злиття] зараз.
Коли користувач подає запит на витяг, він просить внести деякі зміни з гілки на їх клонінг виделки назад у сховище іншого користувача.
Потрібні зміни можна отримати з джерела запиту на виклик. Для цього клонуйте сховище користувача ( git://github.com/berstend/frappe.git
), а потім перевірте гілку, з якої він створив запит на витяг ( feature/mongoose-support
).
Після встановлення git-extras
(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install)
Ви можете просто використовувати git pr
$ git pr 62 [remote]
З новим офіційним інтерфейсом командного рядка Github :
gh repo clone org/repo
cd repo
gh pr checkout 44
де 44
номер PR, але також може бути назва філії.
Див. Додаткові відомості та параметри та інструкції з установки .
clone
алеfetch
дивіться: stackoverflow.com/questions/6743514 / ...