Jak skonfigurować własny serwer GIT? Co to są nagie repozytoria?


10

Próbuję skonfigurować prosty serwer GIT. Mam Ubuntu zainstalowany na wirtualnym komputerze (Virtual Box). Zainstalowałem GIT, utworzyłem repozytorium itp

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

Potem w Windows zrobiłem coś jak poniżej (na cygwin)

git clone jiewmeng@192.168.0.3:proj1

Próbowałem wtedy wprowadzić zmiany

git commit -am "..."

ale mam coś takiego

patrz zdjęcie

Przypuszczam, że źle skonfigurowałem GIT? Czytam, że ma to coś wspólnego z repozytoriami typu bare / non-bare? Czy powinienem używać goły cały czas? próbowałem

git checkout --bare jiewmeng@192.168.0.3:proj1 

ale dostałem się proj1.gitdo środka, dziwne pliki / foldery, takie jak (HEAD itp.) Jaki jest właściwy sposób konfiguracji GIT?

też ktoś może wyjaśnić repozytorium nagie / nie-nagie, jestem trochę zagubiony, z GitHub nie ma czegoś takiego!

AKTUALIZACJA 28 kwietnia 2011 18:00 UTC + 8

Próbowałem śledzić http://www.youtube.com/watch?v=1gNFrPNF9-Y i na Ubuntu (serwer)

git init --bare

potem w Windows (Client / Cygwin) tak

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

brak błędów wydaje się być w porządku. Ale w Ubuntu nie widzę, gdzie są moje pliki? Spojrzałem na branches/1 tam n-ty?

Odpowiedzi:


9

„Normalne” repozytorium to katalog zawierający rzeczywiste repozytorium i kopię roboczą. Rzeczywiste repozytorium znajduje się w ukrytym podkatalogu o nazwie .git. Kopią roboczą są te pliki i katalogi, z którymi pracujesz.

„Nagie” repozytorium to tylko zawartość .gitkatalogu, bez kopii roboczej.

Nie możesz pracować na czystym repozytorium. Najpierw musisz sklonować nagie repozytorium do normalnego repozytorium, a następnie pracować nad klonowaniem.

Podczas pierwszej próby utworzyłeś „normalne” repozytorium. Potem sklonowałeś to. Następnie próbowałeś wypchnąć z powrotem do normalnego repozytorium. Masz ostrzeżenie. Nie powinieneś wypychać do normalnego repozytorium. Git ostrzega cię, gdy próbujesz to zrobić. Powinieneś pchać tylko do samego repozytorium.

W drugiej próbie utworzyłeś „puste” repozytorium. Następnie utworzyłeś „normalne” repozytorium. Następnie przeszedłeś z normalnego do czystego repozytorium. To jest jeden z oczekiwanych przepływów pracy. Dlatego nie otrzymałeś żadnych błędów ani ostrzeżeń.

Jeśli chcesz pracować nad projektem z komputera z systemem Windows i z komputera z systemem Ubuntu, masz dwie opcje:

  1. Utwórz puste repozytorium (nie ważne gdzie). Następnie sklonuj z tego repozytorium, jeden na komputerze z systemem Windows i jeden na komputerze z systemem Ubuntu. Teraz wypchnij z klonów do nagiego repozytorium i pociągnij z nagiego repozytorium do klonów. Nie pchaj do normalnych repozytoriów.

  2. Utwórz dwa normalne repozytoria, jedno na komputerze z systemem Windows i jedno na komputerze z systemem Ubuntu. Teraz, pracując na Ubuntu, możesz pobierać z komputera z systemem Windows i odwrotnie. Nie naciskać na siebie.

Konkluzja: zawsze pchaj tylko do samych repozytoriów. We wszystkich innych przypadkach, jeśli uważasz, że chcesz przepchnąć z A do B, zamiast tego przejdź do B, a następnie pociągnij z A.

Wygląda na to, że jesteś bardzo nowy. Przeczytaj jedną lub obie z następujących bardzo dobrych książek: Git Book , Pro Git .


1
hmm wydaje się, że głównym punktem uczenia się jest „ pchanie tylko do samych repozytoriów. We wszystkich innych przypadkach, gdy myślisz, że chcesz przepchnąć z A do B, zamiast tego przejdź do B, a następnie pociągnij z A ”. Jeśli tak, w jaki sposób robi to GitHub? Naciskam na to w prawo (nv już go używał, żeby się obudzić ...)?
Jiew Meng

@JiewMeng: GitHub używa czystych repozytoriów. Witryna odczytuje dane bezpośrednio z Git i nie potrzebuje katalogu roboczego.
user1686

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.