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 ответов:
вы можете указать 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/