Как мне поддерживать ветку моего проекта git в курсе master? - PullRequest
2 голосов
/ 25 января 2011

Допустим, у меня есть master ветвь и project ветвь, оба на нашем удаленном origin.Работа в основном выполняется в ветке project, но иногда исправление ошибки необходимо внести в master, чтобы его можно было немедленно развернуть.В конце концов, когда проект будет завершен, я хочу иметь возможность объединить все коммиты в проекте в один коммит, а затем объединить его в master.

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

Я в порядке с переписыванием истории на удаленном project, потому что это всего лишь команда2 и мы понимаем последствия и готовы быть до смешного осторожными.Но как мне это сделать?

Ответы [ 4 ]

2 голосов
/ 25 января 2011

вы можете объединить ветки в git

git checkout project

git merge origin/master

Это объединит любые изменения, которые мастер внес в проект, если они произошли от того же предка.

1 голос
/ 27 января 2011
git checkout project
git rebase master
git push origin +project:project

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

0 голосов
/ 26 января 2011

Что касается функциональных ветвей, я предпочитаю перебазировать их на master.Это особенно полезно для длинных ветвей функций, которые могут потребовать большой разработки, прежде чем вернуться к master, в то время как master будет развиваться параллельно.

Перебазирование примет изменения вашей ветви и применит их к master, результатом будет ваша новая ветка.master само останется нетронутым.

Вы можете сделать это следующим образом, когда ваша ветка project извлечена:

(project) $ git rebase master

или явно:

(some-branch) $ git rebase master project

Примечание: Перебазирование перепишет историю вашей ветки!Поэтому будьте осторожны.

Для получения дополнительной информации см. Документацию .

0 голосов
/ 25 января 2011

Я был бы склонен черпать соответствующее изменение в «проекте» в «мастер», так что «мастер» содержит нужный код.

Я бы либо слил 'master' обратно в 'project', либо просто отслеживал примененные идентификаторы патча. (Какой бы подход ни подходил, делайте это последовательно!). Лично я думаю, что объединить «master» обратно в «project» проще в долгосрочной перспективе.

...