Git Remote филиалы - PullRequest
       92

Git Remote филиалы

1 голос
/ 08 июня 2011

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

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

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

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

1 Ответ

1 голос
/ 08 июня 2011

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

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

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

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

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

Вкл. desktop:

git checkout -b temp

Затем, на notebook:

git push desktop myfeature:myfeature

Назад на desktop:

git checkout myfeature
git branch -D temp 

Вот и все.

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

Любой Боб делает

git pull alice

, если alice/myfeature настроен как отслеживающая ветвь для его myfeature ветви (установите его с git branch --set-upstream myfeature alice/myfeature). Или

git fetch alice
git merge alice/myfeature

, если ветвь Алисы myfeature не настроена как ветвь отслеживания.

...