Utiliza URL de repositório de alice
[cursogit.git] / Branches.mdwn
1 # Branches
2
3 Um branch é uma referência a um commit, que pode ser atualizada através
4 de novos commits quando é o branch corrente, ou através de outros
5 comandos.
6
7 Git permite a fácil e rápida criação de branches. Um branch pode ser
8 criado com o comando branch.
9
10         ~/project$ git branch
11         * master
12         ~/project$ git branch devel
13         ~/project$ git branch
14           devel
15         * master
16         ~/project$ 
17
18 O novo branch aponta, ao ser criado, para o mesmo commit que o HEAD
19 aponta em sua criação. É possível especificar um commit diferente,
20 através do ID ou outra referência.
21
22 O branch corrente é indicado pelo asterisco na saída do comando git
23 branch. Para trocar o branch corrente, pode ser utilizado o comando git
24 checkout.
25
26         ~/project$ git checkout devel
27         Switched to branch 'devel'
28         ~/project$ git branch
29         * devel
30           master
31         ~/project$ 
32
33 Um novo branch também pode ser criado com a opção -b de git checkout,
34 que recebe o nome do novo branch.
35
36         ~/project$ git branch
37         * devel
38           master
39         ~/project$ git checkout -b novo master~
40         Switched to a new branch 'novo'
41         ~/project$ git branch
42           devel
43           master
44         * novo
45         ~/project$ 
46
47 Comandos como git show, git log, e outros que aceitam um commit ID como
48 parâmetro, aceitam o nome de um branch como parâmetro também.
49
50         ~/project$ git show novo
51         commit e07b9f077684f5e1528cb3632a8e2175cb4a6981
52         Author: Thadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
53         Date:   Sun Jun 22 21:34:01 2014 -0300
54
55             Atualiza README com o real propósito do projeto.
56
57         diff --git a/README b/README
58         index a10eb63..0c4d1d4 100644
59         --- a/README
60         +++ b/README
61         @@ -1 +1,3 @@
62         -Novo projeto
63         +Projeto de demonstração do git.
64         +
65         +Um simples hello world em C.
66         ~/project$ 
67
68 O comando git diff permite comparar duas revisões, ou dois pontos
69 indicados por commits, seja utilizando IDs, branches, ou outras formas
70 de especificar um commit ou revisão.
71
72         ~/project$ git diff HEAD master
73         diff --git a/Makefile b/Makefile
74         new file mode 100644
75         index 0000000..8b8f8eb
76         --- /dev/null
77         +++ b/Makefile
78         @@ -0,0 +1,9 @@
79         +CC = gcc
80         +CFLAGS = -Wall
81         +OBJECTS = hello.o
82         +
83         +%.o: %.c
84         +       $(CC) $(CFLAGS) -o $@ -c $<
85         +
86         +hello: $(OBJECTS)
87         +       $(CC) $(CFLAGS) -o hello $(OBJECTS)
88         diff --git a/hello.c b/hello.c
89         new file mode 100644
90         index 0000000..5ba7644
91         --- /dev/null
92         +++ b/hello.c
93         @@ -0,0 +1,7 @@
94         +#include <stdio.h>
95         +
96         +int main(int argc, char **argv)
97         +{
98         +       printf("Hello, world!\n");
99         +       return 0;
100         +}
101         ~/project$ 
102
103 Já git log e outros comandos aceitam uma lista de revisões, que pode ser
104 especificada de diversas maneiras. Uma maneira comum é indicar um commit
105 inicial e outro final, através da notação inicial..final, ou ^inicial
106 final. Esta notação, na verdade, implica em todos os commits alcançáveis
107 por final, excluindo aqueles alcançáveis por inicial.
108
109         ~/project$ git log novo..master
110         commit 53b6b836f6c83b8df441f63fe3118b109a83e73a
111         Author: Thadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
112         Date:   Sun Jun 22 21:36:28 2014 -0300
113
114             Adiciona programa principal e sistema de build.
115
116             O programa principal que imprime "Hello, world!" e um Makefile para
117             compilá-lo são adicionados.
118         ~/project$