Manipulando repositórios remotos.
[cursogit.git] / Colaborando_com_Git.mdwn
1 # Colaborando com Git
2
3 Git funciona localmente. Commits, branches, logs estão gravados no
4 repositório local. Para colaborar com outros projetos, precisamos
5 publicar e ter acesso a repositórios públicos.
6
7 É possível publicar através de vários protocolos. Além de um diretório
8 local, uma das formas mais simples é utilizar SSH, já que independe de
9 outra configuração e permite escrita. HTTP é uma boa opção somente
10 leitura para repositórios públicos, já que não exige credenciais para
11 acesso. A outra opção é o protocolo próprio do Git, através do git
12 daemon.
13
14 ## Repositórios e branches remotos
15
16 Para criar um novo repositório a partir de um repositório publicado,
17 usamos o comando git clone.
18
19         ~/$ git clone /home/user2/project
20         Cloning into 'project'...
21         done.
22         ~/$ cd project
23         ~/project$ ls -a
24         .  ..  .git  README
25         ~/project$ 
26
27 Quando um repositório é clonado, temos uma cópia local das referências
28 deste repositório. O repositório é registrado com um nome, sendo origin
29 o nome padrão, e as referências a seus branches são prefixadas com este
30 nome e uma barra. Para visualizar estes branches remotos, utilizamos a
31 opção -r do comando git branch.
32
33         ~/project$ git branch -r
34           origin/HEAD -> origin/master
35           origin/master
36         ~/project$ 
37
38 Note que o HEAD do repositório remoto aponta para o branch remoto
39 chamado master. O HEAD remoto é utilizado para criar um novo branch
40 local quando o repositório é clonado.
41
42         ~/project$ git branch
43         * master
44         ~/project$ 
45
46 ## Remotes
47
48 Com Git, é possível colaborar com mais de um repositório remoto. A lista
49 de repositórios rastreados, com seus nomes e URLs fica no arquivo de
50 configuração do repositório, ou seja, $REPODIR/.git/config.
51
52 Para manipular esta lista, o comando git remote pode ser útil. É
53 possível listar, adicionar, remover, renomear repositórios remotos.
54
55 Ao clonar um repositório, o remoto origin já é criado. Este é o nome
56 padrão para comandos que aceitam um remoto como parâmetro, mas permitem
57 que seja omitido, assumindo o remoto origin.
58
59         ~/project$ git remote
60         origin
61         ~/project$ 
62
63 Para adicionar um novo remoto, usamos o subcomando add, passando um nome
64 e uma URL como parâmetros.
65
66         ~/project$ git remote add git://alice.example.com/project.git/
67         ~/project$ git remote show
68         alice
69         origin
70         ~/project$ git remote show -n alice
71         * remote alice
72           Fetch URL: git://alice.example.com/project.git/
73           Push  URL: git://alice.example.com/project.git/
74           HEAD branch: (not queried)
75           Local ref configured for 'git push' (status not queried):
76             (matching) pushes to (matching)
77         ~/project$ 
78
79 Ao adicionar um novo repositório remoto, apenas acrescentamos este
80 repositório ao nosso arquivo de configuração. Não fazemos nenhum
81 download dos seus branches e commits remotos. A opção -n do subcomando
82 show evita buscar dados remotamente, que utilizaria a rede.
83
84 Note que temos duas URLs, uma para fetch e outra para push, que veremos
85 logo a seguir o que significam. Também temos o branch para qual o HEAD
86 do remoto aponta. Neste caso, como o repositório não foi acessado, não
87 temos esta informação. E a configuração para o push, que veremos logo a
88 seguir, fará atualização de branches que se casem.
89
90 Para remover um repositório remoto, utilizamos o subcomando rm, e pare
91 renomear, o subcomando rename.
92
93         ~/project$ git remote rename alice aliceS
94         ~/project$ git remote show
95         aliceS
96         origin
97         ~/project$ git remote rm aliceS
98         ~/project$ 
99
100 ## Fazendo atualizações
101
102 ## Publicando um repositório