Як подати запит на витяг із клонованого репо?


82

Як подати запит на витяг із існуючого локально клонованого репо?

Часто я хочу переглянути вихідний код деяких бібліотек з github, тому клоную його. Пізніше я виявляю проблему з кодом і піднімаю його у списку розсилки, часто побіжно. Автор бібліотеки каже "приємна знахідка, чи можете ви надіслати запит на витяг?".

І відповідь "не так просто". Я ще не розгалужив репо, я його клонував. І, здається, я не можу знайти подання запиту на витяг із клонованого репо?

Якщо ця межа відповідає дійсності, відчувається, що розумна реакція полягає у тому, щоб розщедрити все, що завгодно, і все, на що ти колись дивишся, так що, якщо ти коли-небудь захочеш зробити свій внесок, ти зможеш. І це заповнює ваш акаунт github безліччю неактивних форків.

Здається, багато розмов з цього питання - чи я єдина людина, на яку ця проблема впливає?


4
Оскільки помітив це дуже подібне запитання: stackoverflow.com/questions/4209208/…
Бен Хатчісон

Відповіді:


55

Розгалужте репо на GitHub, а потім додайте репозиторій форка як пульт до локальної клонованої копії:

git remote add myfork https://github.com/<myGitHubAccountName>/<repoName>.git

Тоді ви можете натиснути на свою вилку:

git push myfork master

Якщо ви робите більше, ніж лише один запит на витягування, ви можете видалити originпульт дистанційного керування та назвати свою вилку формою:

git remote rm origin
git remote add origin https://github.com/<myGitHubAccountName>/<repoName>.git

Це, як правило, те, що я роблю. Іноді я додаю оригінальне походження, оскільки upstreamдосі маю посилання на нього.


5
Як це зробити без розгалуження?
Аарон Холл

3
Якщо у вас є push-доступ до репо, ви можете відкрити запит на витяг між гілками цього репо. Вам потрібно буде пересунути свою локальну гілку на нову назву гілки origin- щось на зразок git push origin HEAD:my-feature. Потім ви можете використовувати веб-інтерфейс, щоб відкрити запит на витягування з my-featureдо master.
bobthecow

11
@Torek - черговий зіпсований робочий процес. Невже так складно виконати просту дію? Я думав, що це одна з головних цілей git - спростити співпрацю та спільний доступ до латок у децентралізованій моделі. Для того, щоб вивести ціль, ракетоносець не повинен бути простим і легким для досягнення, оскільки це основний робочий процес. Тим хлопцям потрібно найняти експерта з UX, оскільки їм усім не вистачає здорового глузду, щоб зрозуміти це самостійно.
jww

10

Якщо ви в порядку встановити інший двійковий файл на своєму шляху, github випустив приємний маленький інструмент під назвою hub.

Якщо ви клонували чужий репо:

$ hub fork  # This creates a fork and adds your repo as a remote

$ git push YOUR_USER feature  # push the changes to your new remote

$ hub pull-request  # will open your browser

Дякуємо, що поділилися інформацією про Hub, і мені це подобається :) Я потрапив саме в цю ситуацію, і хаб зробив це для мене таким зручним
Wahib Ul

Важливо зауважити, що "розгалуження концентратора" все ще створює розгалужений репо-вихід у вашому обліковому записі на GitHub.
Грейнджер

-1

Я також завжди клоную замість форка, і для мене працюють наступні кроки:

  1. Створіть нову гілку у своєму клонованому репо та внесіть нові зміни.
  2. Перенесіть зміни до своєї гілки таким чином:

    git push origin insert_your_working_branch_name

  3. Тепер ви зможете знайти свою робочу гілку в запиті на витягування від майстра github.


3
Я не розумію, як може працювати крок 2 вище, якщо ви клонували чийсь репо, на який у вас немає прав на push?
Бен Хатчісон,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.