Отправка изменений git на общий сетевой диск

90

Как команда из четырех человек может использовать Git (в частности, Github для Windows ) для передачи локальных изменений на общий сетевой диск?

Прямо сейчас (без Git) мы должны скопировать файлы с сетевого диска на наш локальный компьютер, отредактировать файлы, а затем повторно загрузить их на общий сетевой диск. Это кропотливый процесс, который может привести к множеству ошибок, но похоже, что Git может нам помочь.

Можем ли мы просто установить Git на общий диск и перейти оттуда?

user1549303
источник

Ответы:

123

Не уверен, что вы нашли что-то, что работает для вас, или нет, но у меня есть запись о том, как это сделать на сетевом диске Windows:

http://tony.halcyonlane.com/blog/2011/09/22/Using-git-at-work-on-a-Windows-network-drive/

Из командной строки перейдите на подключенный диск.

$ cd g:

Затем перейдите в репозиторий, который скоро будет git.

$ cd скрипты

Затем создайте пустой репозиторий git. Если вы не используете параметр --bare, у вас будут проблемы, поэтому не упускайте его.

$ git init --bare

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

$ c:

$ cd работа / скрипты

$ git clone file: // g: \ scripts

Когда вы клонируете, вы автоматически получаете пульт с именем «origin», и вы можете отправить его на сервер для безопасного хранения в любое время, когда вы вносите изменения локально.

$ git push origin master

Если у вас уже есть репозиторий git, и вы просто хотите отправить его на общий диск, вы можете сделать это из своего локального каталога git.

$ git удаленное добавление исходного файла: // g: \ scripts

$ git push origin master

Тони Эйхельбергер
источник
1
Спасибо - я сделал именно это для личного проекта в своей домашней сети.
Мартин Снайдер
Я выполнил эти шаги, но при запуске git push origin master error: не могу создать sh: нет такого файла или каталога, фатальный: невозможно выполнить вилку
NickStees
Спасибо. На этот ответ
ушло
Для тех, у кого не назначен общий диск, есть pushd (и popd) для создания виртуального временного диска для перехода ( см. Ссылку )
LoJo
Какие проблемы будут у вас, если вы не используете --bare? У меня уже есть репозиторий на сетевом диске, и я хотел бы использовать его как удаленный.
Fractaly
24

Наша команда в настоящее время занимается именно этим. У каждого разработчика есть:

  1. Git установлен на их локальном компьютере
  2. Доступ к их личному общему диску ( L:)
  3. Доступ к общему групповому диску ( V:)

У нас есть «удаленный» репозиторий (настроенный с помощью init -bare) на V:диске, и у каждого есть клон на своем личном L:диске. Все изменения вносятся на L:диск и V:передаются на диск, которые затем переносятся позже другими разработчиками в их соответствующие личные репозитории на своих L:дисках. Это работает без каких-либо проблем и устраняет необходимость в сервере Git.

Эйканал
источник
Хорошо, отлично! Нужно ли мне сначала создать локальное репо, а затем настроить удаленный репо на общем диске?
user1549303
1
@ user1549303 - Вот как мы это делаем. Вы можете создать локальное репо (наше L:репо на диске) с помощью git init, а затем создать удаленный (наш v:накопитель) с помощью git clone --bare(или git init --bare, а затем push из L:).
eykanal
@eykanal - Моя команда в настоящее время использует древнюю ужасную библиотеку управления версиями, и мы собираемся перейти на git. Одна вещь, которую наша текущая библиотека позволяет мне сделать, - это увидеть, кто извлек файл, но забыл зафиксировать изменения. При использовании git все репозитории являются локальными, поэтому как узнать, что кто-то забыл нажать на «v:»?
Кевин Бучан
4
@KevinBuchan - Я предлагаю вам разместить свой комментарий как новый вопрос.
eykanal
1
Как Git реагирует, когда два разработчика пытаются одновременно нажать на один и тот же общий репозиторий (скажем, V :)? Были ли у вас проблемы с одновременными операциями push?
Jordi
2

Вы можете добавить еще один пульт, указывающий на ваш сетевой диск (git remote)

Затем вы можете нажать pull аналогично тому, что вы делаете с github

блюзмен
источник