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/