Как настроить собственный GIT-сервер? Что такое голые / не голые репо?


10

Я пытаюсь настроить простой GIT-сервер. У меня Ubuntu установлен на виртуальном ПК (Virtual Box). Я установил GIT, создал репо и т. Д.

git init 
git add .
git commit "..."

Затем на Windows я сделал что-то вроде ниже (на Cygwin)

git clone jiewmeng@192.168.0.3:proj1

Попробовал потом внести изменения

git commit -am "..."

но есть что-то вроде

увидеть изображение

Я полагаю, я неправильно настроил GIT? Я читал, что это связано с голыми / не голыми репозиториями? Должен ли я использовать голые все время? Я старался

git checkout --bare jiewmeng@192.168.0.3:proj1 

но попал proj1.gitв него, странные файлы / папки типа (HEAD и т. д.) внутри. Как правильно настроить GIT?

также кто-то может объяснить голые / не голые репо, я вроде как потерян, с GitHub такого нет!

ОБНОВЛЕНО 28 апреля 2011 18:00 UTC + 8

Я попробовал следующее http://www.youtube.com/watch?v=1gNFrPNF9-Y и на Ubuntu (Server) сделал

git init --bare

затем на Windows (клиент / Cygwin) сделал

git init 
// added readme.txt 
git add .
git commit -m "..."
git remote add origin master jiewmeng@192.168.0.3:proj2
git push origin master

нет ошибок, кажется, хорошо. Но в Ubuntu я не вижу, где мои файлы? Я смотрел на branches/1 там?

Ответы:


9

«Нормальный» репозиторий - это каталог, содержащий реальный репозиторий и рабочую копию. Фактический репозиторий находится в скрытом подкаталоге с именем .git. Рабочая копия - это те файлы и каталоги, с которыми вы работаете.

«Пустой» репозиторий - это просто содержимое .gitкаталога, без рабочей копии.

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

В вашей первой попытке вы создали «нормальное» хранилище. Затем вы клонировали это. Затем вы попытались вернуться в обычный репозиторий. Тогда вы получили предупреждение. Вы не должны подталкивать к нормальному хранилищу. Git предупреждает вас, когда вы пытаетесь это сделать. Вы должны только подтолкнуть к голому хранилищу.

Во второй попытке вы создали «голое» хранилище. Затем вы создали «нормальное» хранилище. Затем вы вытолкнули из обычного в голое хранилище. Это (один из) ожидаемый рабочий процесс (ы). Вот почему у вас нет ошибок или предупреждений.

Если вы хотите работать над своим проектом с компьютера с Windows и с компьютера с Ubuntu, у вас есть два варианта:

  1. Создайте голое хранилище (не важно где). Затем клонируйте из этого репозитория один на компьютере с Windows и один на компьютере с Ubuntu. Теперь нажмите от клонов к пустому хранилищу и потяните от пустого хранилища к клонам. Не пихайте в нормальные репозитории.

  2. Создайте два обычных репозитория, один на компьютере с Windows и один на компьютере с Ubuntu. Теперь, работая над Ubuntu, вы можете вытащить из машины Windows и наоборот. Не давите друг на друга.

Итог: только когда-либо подтолкнуть к голым хранилищам. Во всех других случаях, когда вы думаете, что хотите перейти от A к B, вместо этого, перейдите к B, затем потяните от A.

Похоже, вы новичок в Git. Пожалуйста, прочитайте одну или обе из следующих очень хороших книг: Git Book , Pro Git .


1
хммм кажется, что основной смысл обучения - это « только когда-либо переходить в открытые репозитории. Во всех других случаях, когда вы думаете, что хотите перейти от А к В, вместо этого перейдите к В, а затем извлеките из А ». Если да, то как GitHub это делает? Я нажимаю на это право (Н.В. использовал его уже некоторое время ...)?
Jiew Meng

@JiewMeng: GitHub использует голые репозитории. Сайт читает данные напрямую из Git и не нуждается в рабочем каталоге.
user1686

1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.