2011-06-08 3 views
1

В настоящее время у меня есть установка Git с центральным открытым хранилищем, к которому обращаются два разработчика через удаленные репозитории. Я столкнулся с проблемой, когда создал ветку, а затем попытался вытолкнуть эту ветку из удаленного репозитория в центральный пустой репозиторий, аналогичный тому, который был в this post.Git Удаленные ветви

Я читал, что отслеживание ветвей было лучшим способом сделать это, но книга Version Control with Git, которую я читаю, говорит, что поскольку ветви отслеживания предназначены для отслеживания изменений из другого репозитория, они не должны использоваться для слияния и фиксации.

Основываясь на моем текущем настроении, как лучше всего обращаться с разными ветвями?

Я планировал иметь филиал для каждой версии/выпуска программного обеспечения, но кажется, что самым простым способом было бы создание отдельных репозиториев для каждой версии/выпуска.

+1

Посмотрите на git-flow. [Эта статья] (http://nvie.com/posts/a-successful-git-branching-model/) описывает разумный подход к использованию филиалов и тегов для организации выпусков, версий и т. Д .; и [этот] (http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/) дает обзор самих инструментов git-flow. –

+0

Спасибо, Саймон, это выглядит довольно многообещающе. Я хорошо посмотрю на это. – GrandMasterFlush

ответ

1

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

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

В простых хранилищах нет проверочной рабочей копии, поэтому вы всегда можете нажать на них (по крайней мере, до тех пор, пока вы добрались до последней версии).

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

После процесса (если вы хотите, чтобы подтолкнуть изменения ветви myfeature от notebook к удаленному desktop, который имеет в настоящее время филиал myfeature проверил:

На desktop:

git checkout -b temp 

Затем на notebook:

git push desktop myfeature:myfeature 

Ba ск на desktop:

git checkout myfeature 
git branch -D temp 

Вот так.

Другой вариант (в случае двух разработчиков (Алисе и Бобу), работающих на одной и той же отрасли) будет то, что – если боб хочет получить самую последнюю версию myfeature от алиса – он тянет изменения из алиса вместо давая ей push ее изменения в его репо. Предполагая, что компьютер Алисы настроен как удаленный alice в репо bob, а bob в настоящее время проверил ветвь myfeature.

Либо боб делает

git pull alice 

если alice/myfeature настроен как отслеживание филиал для его myfeature ветви (установить его с). Или

git fetch alice 
git merge alice/myfeature 

если myfeature филиал Алису не настроен как отслеживание филиал.

+0

Спасибо @eckes, мы в настоящее время работаем с моделью голого репо, которую вы предложили, и она отлично работает, пока я не попытаюсь проверить изменения, внесенные в новую ветку. Я дам ваши комментарии. – GrandMasterFlush

+0

Выполнено, надеюсь, что это поможет. – GrandMasterFlush

+0

@GrandMasterFlush: что ** точно ** является проблемой? Вы получаете какие-либо ошибки или что? – eckes

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

  • Нет связанных вопросов^_^