Я полный Noob, когда дело доходит до GIT. За последние несколько дней я делал первые шаги. Я настраивал репо на своем ноутбуке, вытащил Trunk из проекта 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
** РЕДАКТИРОВАТЬ - ОТВЕТ **
Спасибо всем, что помогло. Я попробовал сопоставление диска, и это сработало, поэтому я подумал, что вернусь и повторю попытку без сопоставления. Конечный результат:
git clone file://\\\\192.168.0.51\code
Это сработало отлично.
Спасибо
Вы можете указать 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
содержит каталог .git
):
C:\some\dir\> git clone --local file:///C:/path/to/repo my_project
Репозиторий будет клонирован к C:\some\dir\my_project
. Если вы опустите file:///
часть, то подразумевается опция --local
.
ответ с именем хоста не работал у меня но это произошло:
git файл клона:////home/ git/repositories/MyProject.git/
Мне удалось сделать это, используя файл://, но с одним дополнительным косой чертой для обозначения абсолютного пути.
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 для работы под окнами, но если вы собираетесь делать это много, возможно, стоит изучить.
cd
'd в другой каталог на диске Z:
. IIRC; Я давно не был пользователем Windows. Также может случиться так, что git
интерпретирует буквы диска иначе, чем стандартное соглашение Windows. Вы пробовали `Z:`?
Не уверен, что это из-за моей версии git (1.7.2) или что-то, но перечисленные выше методы с использованием имени машины и IP-параметров не работали для меня. Дополнительная информация, которая может/не может быть важна, заключается в том, что репо было голой репо, которую я инициализировал и выталкивал с другой машины.
Я пытался клонировать проект1, как описано выше, с помощью команд типа:
$ 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/