2013-09-02 6 views
1

Я прочитал прекрасное руководство и прочитал здесь несколько вопросов, но я все еще не уверен, как правильно обрабатывать исправления с помощью запросов на передачу.Правильное выполнение запросов на тягу в GitHub

Я использую GitHub для Windows (но я в порядке с использованием командной строки, если это необходимо).

Вот что я делаю, и где я путаюсь:

  1. Раздвоенный оригинальный проект GitHub, чтобы создать свой собственный.
  2. Сделано изменение A, в который я хочу включить оригинальный проект.
  3. Отправлен запрос на тягу для A, который они приняли, поэтому он теперь является частью оригинального проекта.
  4. Сделано изменение B, что бесполезно для них, поэтому я не хочу, чтобы они включали его в свою версию.
  5. Сделано изменение C, которое я хочу использовать.
  6. Более коммиты, некоторые из которых имеют для них значение, некоторые из которых не являются.

Каков правильный порядок разветвлением/ветвления/толкай запрос/слияние с:

  1. Убедитесь, у меня есть версия со всеми моими изменениями.
  2. Убедитесь, что я могу поделиться некоторыми изменениями с проектом вверх.
  3. Как только я делаю изменения B в моей главной ветке, любые новые ветви будут включать его, так как я могу либо отправить только соответствующие изменения для C? Или мне нужно каким-то образом создать новую ветку, основанную на том, что еще есть в своей копии?

Я в основном просто хочу удостовериться, что я не заставляю разработчиков upstream работать над тем, чтобы вернуться и вишнево выбрать определенные изменения. Чем проще я делаю это для них, чтобы исправить ошибки, тем лучше, тогда все счастливы!

+1

Вы думали о просто держать ветку для работы и хранения, что до настоящего времени с их хозяином? –

+1

Я бы рекомендовал делать вашу работу в тематической ветке, а не на хозяине. Затем вы просто создаете PR из своей ветки. –

ответ

1

Обычный рабочий процесс для разветвленных проектов состоит в том, чтобы создать собственную ветку (или ветви), основанную на восходящей ветке (часто это будет upstream/master), и выполняйте всю свою работу в них. Каждая ветвь обычно включает одну особенность. Вы отправили бы запросы на загрузку для функций, которые вы хотите внести.

Так, для примера:

внесенного изменения , который я хочу оригинальный проект включить.

Вы обычно хотите, чтобы функция или ошибка затруднительной ветви для изменения и представить его как запрос на вытягивание GitHub, например, так:

# Make a branch based off of upstream/master 
git checkout -b branch-A upstream/master 

# Make some changes, then commit them 
git add . 
git commit 

# Push the branch to your fork, then go to GitHub and submit the pull-request 
git push origin head 

Сделано изменение B, что бесполезно для них, поэтому я не хочу, чтобы они включали его в свою версию.

Если вы не хотите, чтобы владельцы проекта имели это изменение, держите его изолированным в своей ветке и не делайте запрос тянуть за него. Обратите внимание, что вы можете создать резервную копию ветвь к вашим собственным удаленным вилкам, если вы хотите:

# Make a branch based off of upstream/master 
git checkout -b branch-B upstream/master 

# Make some changes, then commit them 
git add . 
git commit 

# Push the branch to your fork 
git push origin head 

Сделано изменение C, что я хочу их использовать.

сделать еще один филиал для C, так же, как вы делали для :

# Make a branch based off of upstream/master 
git checkout -b branch-C upstream/master 

# Make some changes, then commit them 
git add . 
git commit 

# Push the branch to your fork, then go to GitHub and submit the pull-request 
git push origin head 
+0

Итак, для любых изменений, которые я хочу использовать, я всегда создаю новую ветку на основе upstream/master? И чтобы сделать свою собственную всеобъемлющую версию, я могу объединить ветки A, B и C в мою главную ветвь? – Grant

+0

Обычно вы не хотите вносить какие-либо изменения в ветвь 'master' вообще, только для получения обновлений для него (из восходящего репо) и создания ветвей из него. Но да, типичный рабочий процесс GitHub заключается в создании ветки для изменений, которые вы хотите использовать ... но также и для изменений, которые вы хотите сохранить для себя! –

+0

Итак, я в конечном итоге с мастером (который я иногда обновляю для соответствия вверх по течению), веткой для каждого несвязанного изменения, которую я делаю, и веткой, которую я объединять все мои изменения, которые не были включены вверх по течению (для моего собственного использования)? – Grant

0

Update Match 2015:

Смотрите "Create Pull Requests in GitHub for Windows"

Так же, как наш Mac client , теперь вы можете использовать GitHub for Windows для отправки запросов на тягу к GitHub или GitHub Enterprise , прямо с вашего рабочего стола.

Мы не забыли вилок, либо! Если вы создадите репозиторий и хотите внести изменения в репозиторий вверх, GitHub для Windows будет отслеживать ветки вверх. Это означает меньше хлопот, когда вы готовы внести свои изменения назад.


(август 2013) Обратите внимание, что, с клиентами GitHub (GitHub for Windows или GitHub for Mac), то легко:

https://f.cloud.github.com/assets/432536/943708/46a2f12e-0251-11e3-8c46-b1b6636f23d5.png

  • 4444 +01448517990508919118888 (сентябрь 2013)

https://f.cloud.github.com/assets/432536/1160834/a3bbd0be-1fdf-11e3-90aa-13ee15c6c2d8.png

Щелчок будет:

  • открыт GitHub для Mac или GitHub для Windows,
  • клон репозитория (если у вас нет его),
  • автоматически переключается на ветвь, содержащую изменения, и
  • , наконец, откройте файл для редактирования в своем приложении по умолчанию.

Итак, если вам не нравятся командные строки ... у вас есть другой вариант.

Смежные вопросы