Як налаштувати власний сервер 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в нього, wierd файли / папки типу (HEAD тощо) всередині. Який правильний спосіб налаштування GIT?

також хтось може пояснити голі / не голі репости, я якось розгублений, з GitHub, такого немає!

ОНОВЛЕНО 28 квітня 2011 6: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 theres nth там?

Відповіді:


9

"Нормальний" сховище - це каталог, що містить власне сховище та робочу копію. Фактичний сховище знаходиться у прихованому підкаталозі з іменем .git. Робоча копія - це ті файли та каталоги, з якими ви працюєте.

"Оголене" сховище - це лише вміст .gitкаталогу, без робочої копії.

Не можна працювати на голому сховищі. Спочатку потрібно клонувати оголене сховище до звичайного сховища, а потім працювати над клоном.

У першій спробі ви створили "звичайне" сховище. Тоді ви це клонували. Потім ви спробували повернутися до звичайного сховища. Тоді ви отримали попередження. Не слід натискати на звичайне сховище. Git попереджає вас, коли ви намагаєтесь це зробити. Вам слід лише натиснути на оголене сховище.

У другій спробі ви створили "голою" сховище. Тоді ви створили "звичайне" сховище. Тоді ви натиснули зі звичайного до голого сховища. Це (один із) очікуваний робочий процес. Ось чому у вас не було помилок чи попереджень.

Якщо ви хочете працювати над вашим проектом з машини Windows і з машини ubuntu, у вас є два варіанти:

  1. Створіть голое сховище (не важливо, де). Потім клонуйте з цього сховища, один на машині Windows і один на машині ubuntu. Тепер натисніть від клонів до оголеного сховища та потягніть від голого сховища до клонів. Не натискайте на звичайні сховища.

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

Підсумок: лише коли-небудь натискання на голі сховища. У всіх інших випадках, коли вам здається, що ви хочете просунутись від точки A до B, замість цього перейдіть до B, а потім витягніть з A.

Здається, що ви дуже новачок в git. Прочитайте одну чи обидві наступні дуже чудові книги: Git Book , Pro Git .


1
Хм здається, що головним моментом навчання є " лише колись натискання на оголені сховища. У всіх інших випадках, коли ти думаєш, що хочеш просунутись від A до B, замість цього, перейди до B, а потім витягни з A ". Якщо так, то як це робить GitHub? Я підштовхую його до правильного (nv використовував це для лиха вже ...)?
Jiew Meng

@JiewMeng: GitHub використовує голі сховища. Веб-сайт читає дані безпосередньо з Git і не потребує робочого каталогу.
користувач1686

1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.