Come configurare il proprio server GIT? Cosa sono i repository nudi / non nudi?


10

Sto cercando di configurare un semplice server GIT. Ho Ubuntu installato su un Virtual PC (Virtual Box). Ho installato GIT, creato un repository ecc

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

Poi su Windows, ho fatto qualcosa di simile sotto (su cygwin)

git clone jiewmeng@192.168.0.3:proj1

Ho provato a fare delle modifiche allora

git commit -am "..."

ma ho qualcosa del genere

vedi immagine

Suppongo di aver impostato GIT sbagliato? Ho letto qualcosa a che fare con i repository nudi / non nudi? Dovrei usare nudo tutto il tempo? Provai

git checkout --bare jiewmeng@192.168.0.3:proj1 

ma ci sono proj1.gitdentro, file / cartelle strani come (HEAD ecc.) all'interno. Qual è il modo corretto di impostare GIT?

qualcuno può anche spiegare repos bare / non-bare, sono un po 'perso, con GitHub, non esiste una cosa del genere!

AGGIORNATO 28 apr 2011 18:00 UTC + 8

Ho provato a seguire http://www.youtube.com/watch?v=1gNFrPNF9-Y e su Ubuntu (Server) l'ho fatto

git init --bare

quindi su Windows (Client / 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

nessun errore sembra ok. Ma su Ubuntu, non vedo dove sono i miei file? Ho cercato l' branches/ennesimo là dentro?

Risposte:


9

Un repository "normale" è una directory che contiene il repository effettivo e una copia funzionante. Il repository effettivo si trova in una sottodirectory nascosta con il nome .git. La copia di lavoro sono i file e le directory con cui lavori.

Un repository "bare" è solo il contenuto della .gitdirectory, senza una copia funzionante.

Non è possibile lavorare su un repository nudo. Devi prima clonare il repository nudo in un repository normale, quindi lavorare sul clone.

Nel tuo primo tentativo hai creato un repository "normale". Quindi l'hai clonato. Quindi hai provato a tornare al normale repository. Quindi hai ricevuto un avvertimento. Non si dovrebbe spingere in un normale repository. Git ti avverte quando provi a farlo. Dovresti solo spingere in un repository nudo.

Nel tuo secondo tentativo hai creato un repository "nudo". Quindi hai creato un repository "normale". Quindi hai spostato dal normale al repository nudo. Questo è (uno dei) flussi di lavoro previsti. Ecco perché non hai ricevuto errori o avvisi.

Quando vuoi lavorare sul tuo progetto dal computer Windows e dal computer Ubuntu hai due opzioni:

  1. Crea un repository nudo (non importa dove). Quindi clonare da quel repository, uno sul computer Windows e uno sul computer Ubuntu. Spingi ora dai cloni al repository nudo e tira dal repository nudo ai cloni. Non spingere nei normali repository.

  2. Crea due normali repository, uno sul computer Windows e uno sul computer Ubuntu. Ora, quando lavori su Ubuntu, puoi estrarre dal computer Windows e viceversa. Non spingere l'un l'altro.

In conclusione: spingere sempre e solo verso i repository nudi. In tutti gli altri casi, quando pensi di voler spingere da A a B, invece, vai a B quindi tira da A.

Sembra che tu sia nuovo di zecca. Si prega di leggere uno o entrambi i seguenti libri molto belli: Git Book , Pro Git .


1
hmm sembra che il principale punto di apprendimento sia " spingere sempre e solo verso i repository nudi. In tutti gli altri casi, quando pensi di voler spingere da A a B, invece, vai a B e tira da A ". In tal caso, come funziona GitHub? Lo spingo a destra (nv l'ho usato per awile già ...)?
Jiew Meng,

@JiewMeng: GitHub utilizza repository nudi. Il sito Web legge i dati direttamente da Git e non ha bisogno di un workdir.
user1686

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.