Comment configurer son propre serveur GIT? Qu'est-ce qu'un repos nu / non nu?

10

J'essaie de configurer un simple serveur GIT. J'ai Ubuntu installé sur un PC virtuel (Virtual Box). J'ai installé GIT, créé un dépôt, etc.

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

Ensuite, sur Windows, j'ai fait quelque chose comme ci-dessous (sur cygwin)

git clone [email protected]:proj1

J'ai essayé de faire des changements alors

git commit -am "..."

mais j'ai quelque chose comme

voir l'image

Je suppose que j'ai mal configuré GIT? J'ai lu quelque chose à voir avec les repos nus / non nus? Dois-je utiliser nu tout le temps? j'ai essayé

git checkout --bare [email protected]:proj1 

mais y est entré proj1.git, des fichiers / dossiers bizarres comme (HEAD etc.) à l'intérieur. Quelle est la bonne façon de configurer GIT?

quelqu'un peut-il aussi expliquer les repos nus / non nus, je suis un peu perdu, avec GitHub, il n'y a rien de tel!

MISE À JOUR 28 avril 2011 18h00 UTC + 8

J'ai essayé de suivre http://www.youtube.com/watch?v=1gNFrPNF9-Y et sur Ubuntu (serveur)

git init --bare

puis sur Windows (Client / Cygwin)

git init 
// added readme.txt 
git add .
git commit -m "..."
git remote add origin master [email protected]:proj2
git push origin master

aucune erreur ne semble correcte. Mais sur Ubuntu, je ne vois pas où sont mes fichiers? J'ai regardé branches/1 theres nième là-dedans?

JM au travail
la source

Réponses:

9

Un référentiel "normal" est un répertoire contenant le référentiel réel et une copie de travail. Le référentiel réel se trouve dans un sous-répertoire caché portant le nom .git. La copie de travail sont les fichiers et répertoires avec lesquels vous travaillez.

Un référentiel "nu" n'est que le contenu du .gitrépertoire, sans copie de travail.

Vous ne pouvez pas travailler sur un référentiel nu. Vous devez d'abord cloner le référentiel nu dans un référentiel normal, puis travailler sur le clone.

Lors de votre première tentative, vous avez créé un référentiel "normal". Ensuite, vous avez cloné cela. Ensuite, vous avez tenté de repousser vers le référentiel normal. Ensuite, vous avez reçu un avertissement. Vous ne devez pas pousser vers un référentiel normal. Git vous avertit lorsque vous essayez de le faire. Vous devez uniquement pousser vers un référentiel nu.

Dans votre deuxième tentative, vous avez créé un référentiel "nu". Vous avez ensuite créé un référentiel "normal". Ensuite, vous êtes passé du référentiel normal au référentiel nu. Il s'agit (d'un) des flux de travail attendus. C'est pourquoi vous n'avez reçu aucune erreur ou avertissement.

Lorsque vous souhaitez travailler sur votre projet à partir de la machine Windows et de la machine Ubuntu, vous avez deux options:

  1. Créez un référentiel nu (peu importe où). Ensuite, clonez à partir de ce référentiel, un sur la machine Windows et un sur la machine Ubuntu. Poussez maintenant des clones vers le référentiel nu et tirez du référentiel nu vers les clones. Ne pas pousser vers les référentiels normaux.

  2. Créez deux référentiels normaux, un sur la machine Windows et un sur la machine Ubuntu. Maintenant, lorsque vous travaillez sur Ubuntu, vous pouvez tirer de la machine Windows et vice versa. Ne vous poussez pas.

Conclusion: ne jamais pousser que vers des référentiels nus. Dans tous les autres cas, lorsque vous pensez que vous voulez passer de A à B, allez plutôt à B puis tirez de A.

Il semble que vous soyez très nouveau sur git. Veuillez lire un ou les deux très beaux livres suivants: Git Book , Pro Git .

lesmana
la source
1
hmm semble que le principal point d'apprentissage est " ne pousser que vers des référentiels nus. Dans tous les autres cas, lorsque vous pensez que vous voulez passer de A à B, allez plutôt à B puis tirez de A ". Si oui, comment fonctionne GitHub? Je pousse à droite (déjà utilisé depuis longtemps ...)?
Jiew Meng
@JiewMeng: GitHub utilise des référentiels nus. Le site Web lit les données directement depuis Git et n'a pas besoin d'un répertoire de travail.
user1686