Git clone repo через локальную файловую систему в 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 193

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 clone file: / / / / home/git / repositories / MyProject.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. После этого suggstion, конечно, будет означать, что вам нужно будет иметь этот диск отображается каждый раз, когда вы нажимаете/тянете к/от ноутбука. Я не уверен, как вы настраиваете 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/