Я разблокировал репозиторий GitHub. Затем я подтолкнул некоторые изменения к своей вилке. Затем исходный репозиторий объединил мои изменения и некоторые другие. Теперь я хочу объединить те изменения, которые мне не хватает. Я попробовал простое нажатие, затем нажмите, но это дает мои фиксации в двух экземплярах. Какой лучший способ сделать это?
Слияние между вилами в GitHub
Ответ 1
У вас, вероятно, есть "remote" для каждого репозитория. Вам нужно вытянуть с одного пульта и нажать на другой.
Если вы изначально клонировали из своей вилки, этот пульт будет называться "происхождение". Если вы еще не добавили его, вам нужно добавить первый репозиторий-парней в качестве другого пульта:
git remote add firstguy git://github.com/firstguy/repo.git
После того, как все настроено, вы действительно сможете
git pull firstguy master
git push origin
Помните, что git pull
- это не что иное, как макрос, который делает git fetch
и git merge
в этом порядке. Вам просто нужно получить список коммитов из первого репозитория для парней, а затем объединить его ветку в свое дерево. Слияние должно делать правильные вещи с вашими фиксациями на обеих ветвях.
GitHub, во всей своей бесконечной удивительности, дает вам ярлык, конечно. Там есть кнопка "быстрой перемотки" на вашей вилке репозитория, которую вы можете использовать, чтобы поймать свою вилку, если вы полностью слиты с другой стороной.
Ответ 2
Итак, принятый ответ выше не работал у меня отлично. А именно, он, казалось, потерял связь с оригинальным автором github, когда он работал, а затем, похоже, больше не работал после этого. Я думаю, что проблема заключалась в том, что ответ оставил/между удаленным именем и ветвью. Таким образом, он получит ветку, называемую мастером, с удаленного, но затем не сможет ничего с ней сделать. Не совсем уверен, почему.
Вот как github рекомендует со своего сайта: http://help.github.com/fork-a-repo/
Как только вы клонировали разветвленное репо, вам нужно добавить удаленный указатель на оригинал, как и в предыдущем ответе. Они любят называть это вверх по течению, но это не имеет значения.
git remote add upstream git://github.com/octocat/Spoon-Knife.git
Затем вы выбираете
git fetch upstream
и вы увидите версии, доступные для слияния
From git://github.com/octocat/Spoon-Knife.git
* [new branch] gh-pages -> upstream/gh-pages
* [new branch] master -> upstream/master
Тогда вам просто нужно выбрать ветку, в которую вы хотите объединиться. Имейте в виду, что это не локальные ветки, они хранятся в пультах. Но при условии, что у вас нет локальной ветки с именем upstream/master (что разрешено), вы должны быть полностью слиты с приведенной ниже строкой:
git merge upstream/master
В качестве альтернативы вы можете связать выборку/слияние (по крайней мере, после начальной выборки) с помощью этой строки:
git pull upstream/master