Como configurar o próprio servidor GIT? O que é repos nua / não nua?


10

Eu estou tentando configurar um servidor GIT simples. Eu tenho o Ubuntu instalado em um Virtual PC (Virtual Box). Eu instalei o GIT, criei um repo etc

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

Então, no Windows, fiz algo como abaixo (no cygwin)

git clone jiewmeng@192.168.0.3:proj1

Tentei fazer alterações então

git commit -am "..."

mas tem algo como

see image

Eu suponho que eu configurei o GIT errado? Eu li algo relacionado a repos nus / não-nus? Devo usar nua o tempo todo? eu tentei

git checkout --bare jiewmeng@192.168.0.3:proj1 

mas tenho proj1.git é isso, arquivos estranhos / pastas como (CABEÇA etc) dentro. Qual é a maneira correta de configurar o GIT?

também alguém pode explicar repos nus / não-nus, estou meio que perdido, com o GitHub, não existe tal coisa!

ATUALIZADO EM 28 DE ABRIL DE 2011 18H00 UTC + 8

Eu tentei seguir http://www.youtube.com/watch?v=1gNFrPNF9-Y e no Ubuntu (Server) fez

git init --bare

em seguida, no Windows (Client / Cygwin) fez

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

nenhum erro parece ok. Mas no Ubuntu, eu não vejo onde estão meus arquivos? Eu olhei para branches/ por 1 nth lá?

Respostas:


9

Um repositório "normal" é um diretório que contém o repositório atual e uma cópia de trabalho. O repositório atual está localizado em um subdiretório oculto com o nome .git. A cópia de trabalho são os arquivos e diretórios com os quais você trabalha.

Um repositório "nu" é apenas o conteúdo do repositório .git diretório, sem uma cópia de trabalho.

Você não pode trabalhar em um repositório vazio. Você primeiro tem que clonar o repositório nu para um repositório normal e depois trabalhar no clone.

Na sua primeira tentativa, você criou um repositório "normal". Então você clonou isso. Então você tentou empurrar de volta para o repositório normal. Então você recebeu um aviso. Você não deve empurrar para um repositório normal. Git avisa quando você tenta fazer isso. Você deve apenas empurrar para um repositório vazio.

Na sua segunda tentativa, você criou um repositório "simples". Então você criou um repositório "normal". Então você empurrou do normal para o repositório nu. Isso é (um dos) fluxo (s) de trabalho esperado (s). É por isso que você não tem erros ou avisos.

Quando você quer trabalhar em seu projeto a partir da máquina Windows e da máquina Ubuntu, você tem duas opções:

  1. Crie um repositório vazio (não importa onde). Então clone daquele repositório, um na máquina windows e outro na máquina ubuntu. Agora, empurre os clones para o repositório vazio e puxe do repositório para os clones. Não empurre para os repositórios normais.

  2. Crie dois repositórios normais, um na máquina windows e outro na máquina ubuntu. Agora, quando se trabalha no Ubuntu, você pode puxar da máquina Windows e vice-versa. Não empurre um para o outro.

Bottom line: apenas empurre para os repositórios nus. Em todos os outros casos, quando você pensa em empurrar de A para B, vá para B e puxe de A.

Parece que você é muito novo para o git. Por favor, leia um ou ambos dos seguintes livros: Livro Git , Pro Git .


1
hmm parece que o principal ponto de aprendizagem é " apenas empurre para os repositórios nus. Em todos os outros casos, quando você pensa em empurrar de A para B, vá para B e puxe de A ". Se assim for, como é que o GitHub faz isso? Eu empurro para a direita (nv já usou isso para já ...)?
Jiew Meng

@JiewMeng: O GitHub usa repositórios nus. O site lê dados diretamente do Git e não precisa de um workdir.
grawity

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.