Páginas

quinta-feira, 2 de fevereiro de 2012

Criando e usando um repositório Git

Olá,

neste post vou ensinar como criar e usar, de um forma simples, um repositório git para controle de versão de algum projeto seu.

Antes de prosseguir assegure-se de ter feito um backup de todos os arquivos envolvidos no processo caso haja algum problema!

Vou assumir que você tenha um máquina que serve de servidor de arquivos para a sua rede, configurada e funcional, e estações de trabalhos onde serão feitas as modificações do seu projeto. Tudo foi testado em um servidor com o Debian Squeeze e Ubuntu Oneiric nas estações de trabalhos.

Primeiro temos que instalar o git nas máquinas (em todas):
$ sudo apt-get install git-core

Como queremos montar um repositório público, ou seja, um repositório no qual os usuários possam não só clonar o conteúdo como também modificá-lo temos que prosseguir da seguinte maneira.

No servidor vamos criar um pasta e copiaremos o conteúdo que fará parte do projeto:
$ mkdir /home/git 
$ mkdir  /home/git/repo 
$ cp -a projeto/* /home/git/repo/
onde a pasta projeto deve refletir a pasta que contenha o seu projeto que será adicionado ao repositório.

Assim feito vamos iniciar o git
$ cd /home/git/repo
$ git init
Adicionar todos os arquivo
$ git add .
Fazer o commit dos mesmos
$ git commit -a
Agora vamos criar um repositório que será publico
$cd /home/git 
$ mkdir repopublic
$ cd repopublic
$ git init --bare
$ cd ../repo
$ git push /home/git/repopublic master:master

Assim feito teremos duas pastas, a "repo' é o repositório normal e a "repopublic" é o repositório público  no qual poderão ser feitas as mudanças usando o comando git push.

Para os usuários começarem a trabalhar em conjunto no projeto é necessário que os mesmo façam um clone do repositório nas suas estações de trabalhos. Também é necessário que os usuários se identifiquem para o git (cada usuário deve fazer na sua máquina):

$ git config --global user.email "seu e-mail"
$ git config --global user.name "seu nome"

Se a rede estiver configurada para compartilhamento de arquivos, basta;
$ git clone /home/git/repopublic meurepo
Se não:
$ git clone ssh://endereçodoservidor/home/git/repopublic meurepo
ou substitua o ssh por git ou por http.

Para não digitar toda vez o caminho completo vamos criar um apelido:
$ git remote add origin ssh://endereçodoservidor/home/git/repopublic
ou qualquer que seja o caminho para o repositório público.

Com a cópia feita agora eles podem começar as modificações, é recomendável que cada um faça uma ramificação para melhor organização, ou seja, o usuário deve clonar o repositório público e depois fazer:
$ git branch nomedaramificação

e para verificar quais ramificaçoes existem
$ git branch

Para marcar um ramificação para edição
$ git checkout nomedaramificação

Uma vez editados e criados arquivos novos o usuário deve fazer, para cada arquivo novo:
$ git add file1 file2 file3 ...

e depois
$ git commit -a

Para juntar as ramificações com a original
$ git checkout master
$ git merge nomedaramificação

e para mandar as modificações para o repositório primeiro é bom verificar se houve algum atualização com
$ git fetch origin
$ git push origin master:master
Para apagar a ramificação criada
$ git branch -d nomedaramificação

Existem outras maneiros de se trabalhar com o git, a que eu apresentei é somente uma delas.


Fontes e mais opções:
codexico parte 1
codexico parte 2
The Git Community Book

2 comentários:

  1. Olá meu caro!!! Tudo bem?
    primeiramente obrigado pelo post, otimo, ajudou muito o nosso time para criar um repositorio local em nossa empresa, porem, no meu repositorio há dois projetos, gostaria de clonar apenas um
    git clone ssh://endereco/home/git/public-repo funciona muito bem, mas quando tento ssh://endereco/home/git/public-repo/projeto ele não reconhece, tem alguma ideia sobre isso???

    desde já muito obrigado
    Vlw!!!!!

    ResponderExcluir
  2. Olá, tb bem e vc?

    Que bom que te ajudou!
    Neste caso, acho q seria melhor vc criar dois repositórios git, um para cada projeto!
    Eu mesmo faço isso. Cada repositório toma conta de um projeto específico.

    Até mais

    ResponderExcluir