Git клонировать РЕПО через локальную файловую систему в windows

Я полный нуб, когда дело доходит до GIT. Я только что сделал первые шаги за последние несколько дней. Я настроил РЕПО на своем ноутбуке, вытащил ствол из проекта SVN (были некоторые проблемы с ветвями, не заставили их работать), но там все кажется в порядке.

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

git clone file://192.168.10.51/code

к сожалению, это, кажется, не работает для меня:

поэтому я открываю Git Bash cmd и набираю вышеуказанную команду, я нахожусь в C:code (общая папка для обеих машин) это то, что я получаю назад:

Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

как я могу поделиться репозиторием между двумя машинами самым простым из способов.

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

по предложению Себастьяна я получаю следующее:

C:code>git clone --no-hardlinks file://192.168.10.51/code
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

* * EDIT-ANSWER**

Спасибо за все, что помогло. Я попробовал сопоставление диска, и это сработало, поэтому я подумал, что вернусь и повторю попытку без сопоставления. Окончательный результат:

git clone file://\192.168.0.51code

он работал отлично.

спасибо

7 ответов


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

git clone file:////<host>/<share>/<path>

например, если ваш главный компьютер имеет IP 192.168.10.51 и имя компьютера main, и у него есть доля с именем code который сам является репозиторием git, тогда обе следующие команды должны работать одинаково:

git clone file:////main/code
git clone file:////192.168.10.51/code

если репозиторий Git находится в подкаталоге, просто добавьте путь:

git clone file:////main/code/project-repository
git clone file:////192.168.10.51/code/project-repository

$ git clone --no-hardlinks /path/to/repo

вышеуказанная команда использует обозначение пути POSIX для каталога с вашим репозиторием git. Для Windows это (папка C:/path/to/repo содержит ):

C:\some\dir\> git clone --local file:///C:/path/to/repo my_project

репозиторий будет клонирован в C:\some\dir\my_project. Если вы опустите file:/// часть подразумевается.


ответ с именем хоста не работает для меня но это сделало:

файл клон git:////дома/ГИТ/хранилищ/мой проект.git/


мне удалось сделать это с помощью file://, но с одной дополнительной косой чертой, чтобы обозначить абсолютный путь.

git clone file:///cygdrive/c/path/to/repository/

в моем случае я использую Git на Cygwin для Windows, который вы можете видеть из-за части /cygdrive/c в моих путях. С некоторой настройкой пути он должен работать с любой установкой git.

добавление пульта дистанционного управления работает так же

git remote add remotename file:///cygdrive/c/path/to/repository/

возможно, сопоставьте общий ресурс как сетевой диск, а затем сделайте

git clone Z:\

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


не уверен, что это было из-за моей версии git (1.7.2) или что, но подходы, перечисленные выше, используя имя машины и параметры IP, не работали для меня. Дополнительная деталь, которая может/не может быть важна, заключается в том, что РЕПО было голым РЕПО, которое я инициализировал и толкнул с другой машины.

Я пытался клонировать project1, как указано выше, с помощью таких команд, как:

$ git clone file:////<IP_ADDRESS>/home/user/git/project1
Cloning into project1...
fatal: '//<IP_ADDRESS>/home/user/git/project1' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

и

$ git clone file:////<MACHINE_NAME>/home/user/git/project1
Cloning into project1...
fatal: '//<MACHINE_NAME>/home/user/git/project1' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

что сделал работа для меня была что-то попроще:

$ git clone ../git/project1
Cloning into project1...
done.

Примечание-несмотря на то, что клонирование РЕПО было голым, это произвело "нормальный" клон со всеми фактическими файлами кода/изображения/ресурсов, на которые я надеялся (в отличие от внутренних РЕПО git).


введите абсолютные пути или относительные пути.

например, первый ниже использует абсолютные пути:

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

~/git$ git clone --no-hardlinks ~/git/git_test1/   ~/git/bkp_repos/

следующие использует относительные пути:

~/git$ git clone --no-hardlinks git_test1/   bkp_repos2/