git-merge с репозиторием в локальной файловой системе - PullRequest
13 голосов
/ 30 октября 2009

Для некоторого контекста: я только что обновил Ubuntu, который сломал мою существующую установку gitosis (см. Здесь: bug # 368895 ), и только что переустановил gitosis из пакетов. Теперь я хочу перенести всю мою конфигурацию и набор репозиториев из старой установки Gitosis (которая все еще существует и может быть извлечена, но в противном случае она повреждена).

Теперь у меня есть две директории gitosis-admin локально, по одной для каждой установки gitosis. У одного полная история, у другого пусто. Я хочу перетянуть эту историю. Вот что происходит, хотя:

me@server:~/gitosis-admin-new$ git merge ../gitosis-admin-old/
fatal: '../gitosis-admin-old/' does not point to a commit

... где есть git-репозитории в ~/gitosis-admin-old/ и ~/gitosis-admin-new/

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

Что я делаю не так? Я пытался указать на .git / HEAD, который, как я понимаю, является коммитом, но это не работает. Может кто-нибудь объяснить, как это сделать? Спасибо!

Ответы [ 2 ]

23 голосов
/ 31 октября 2009

Вам необходимо использовать git pull с хранилищем, а не git merge (для веток):

git pull ../gitosis-admin-old/

Для объединения может потребоваться выбрать ветку на удаленном компьютере, например ::

.
git pull ../gitosis-admin-old/ master

Если вам нужно сделать это слияние только один раз, то использование git remote add, как в jamessan answer - ненужная работа. С другой стороны, если вы собираетесь вернуться к пульту (потянув более одного раза), это решение будет лучше, чем использование git pull <location> <branch>.

4 голосов
/ 30 октября 2009

Вам необходимо создать пульт для этого хранилища, а затем извлечь и объединить (или просто извлечь) оттуда.

git remote add admin-old file://$HOME/gitosis-admin-old
git pull admin-old
...