Синхронизация веток с Git - PullRequest
3 голосов
/ 19 августа 2009

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

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

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

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

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

Ответы [ 3 ]

6 голосов
/ 19 августа 2009

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

При использовании ветки my_feature выполните:

git rebase master

И это приведет ваши изменения в главной ветви (ветке) к my_feature.

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

2 голосов
/ 19 августа 2009

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

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

0 голосов
/ 25 августа 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...