мерзавец: Простое решение для подталкивания между рабочими копиями

Что я хочу сделать: На моем (ssh отдаленно доступный) университетская машина я работаю над проектом, который я подверг исходному контролю мерзавца (git init, тогда git commit -a после каждого изменения все хорошо работает). Теперь я хочу хотеть работать над тем проектом на моей частной машине дома. Должно быть легким, так как мерзавец - распределенный vcs, правильно?

Я прочитал обучающую программу мерзавца, которая предлагает сделать a git pull в университете, чтобы сделать изменения дома. Это не будет работать, так как моя машина дома не отдаленно доступна. Таким образом, я думал, что сделаю a git push дома. Это работает, но это усложнило (требует git reset в университете впоследствии, и т.д.), так как неголые хранилища не разработаны для подталкивания.

Вопрос 1: Есть ли более легкий путь, чем добавление дополнительного голого хранилища к моей установке (который означал бы, что я имел: (1) «главное» голое хранилище, (2) университет, работающий копия, (3) домашняя рабочая копия)?
<Напыщенная речь>, Если мне действительно нужна та установка, я, возможно, остался с SVN.

Вопрос 2: Если та установка действительно необходима, как я создаю то голое хранилище (git clone --bare, Я предполагаю), и сделайте это «главным» хранилищем, т.е. скажите рабочие копии это git push как предполагается, идет туда.

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

14
задан Heinzi 24 January 2010 в 13:08
поделиться

2 ответа

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

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

Из дома:

git push origin HEAD:from-home

от «Работы»:

git merge from-home

Вы можете настроить свой конфиг по умолчанию для определенного нажатия REFSPEC.

E.G.

git config remote.origin.push +master:from-home

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

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

Итак, по происхождению, создайте пульт дистанционного подзаимного «домой» - вы, очевидно, не можете извлечь из него из-за вашей сети. Это не имеет значения.

На дому скажите, - когда я нажимаю в начало происхождения, у него обновляются Пульт дистанционного управления происхождением :

git config remote.origin.push +master:home/master

Теперь все становится действительно Slick. Из дома, беги Git Push Происхождение , и пойти в начало происхождения, и бегать статус Git или GIT FINITAL - A -V - Что вы увидите, это что-то вроде: «Мастер находится за Home / Master К 3 коммиты и могут быть быстро переадресовываются ».

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

Вам нужно будет постоянно делать новые настройки Config Git Config, поскольку вы создаете дополнительные филиалы на дому. Это накладные расходы, которые вы платите за настройку вашей сети. К счастью, просто и происходит только один раз за филиал.

14
ответ дан 1 December 2019 в 13:59
поделиться
  1. На этот вопрос Суммает свой опыт работы с попыткой синхронизации двух рабочих копий. В конце концов я подумал, что было более естественным и простым, чтобы иметь голый репозиторий. Это не «главный» репозиторий в смысле SVN - вы можете иметь один на UNI и один дома, например, и толчок между ними.

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

1
ответ дан 1 December 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: