Синхронизация веток с Git

С SVN у меня есть следующие настройки:

/tags/
/trunk/
/branches/
/branches/my_feature
/branches/my_other_feature

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

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

Мой вопрос заключается в том, поможет ли использование Git вместо SVN поддерживать синхронизацию веток между собой и транком?

3 ответа

Это поможет вам синхронизировать обе ветви с транком, выполнив ребазинг.

Используя ветку my_feature, выполните:

git rebase master

И это принесет ваши изменения в ветке master (trunk) в my_feature.

Поддержание синхронизации my_feature и my_other_feature - это тот же принцип, если один является потомком другого. Если my_feature не является потомком my_other_feature или наоборот, я не знаю ответа.

Да, по большей части. Все три современных DVCS (Git, Mercurial и Bazaar) могут определить время последнего слияния и не будут пытаться повторно объединить ревизии, которые уже были объединены.

Вы можете столкнуться с некоторыми странными крайними случаями, если вы делаете действительно сложные вещи, но даже если вы делаете это, это будет намного лучше, чем использование SVN.

Обратите внимание, что вы должны полностью использовать Git вместо SVN, чтобы получить желаемую функциональность. Если вы просто используете git в качестве интерфейса к SVN (vai git svn), это, вероятно, приведет к тому, что пользователи SVN не будут корректными.

Другие вопросы по тегам