-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathp0015_checkout.html
226 lines (226 loc) · 10.4 KB
/
p0015_checkout.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="estilo.css">
<link rel="icon" href="img/git_icon.png">
<link href="https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;800&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro&display=swap" rel="stylesheet">
<meta name="keywords" content="danielle8farias, checkout, git, commit, head, linux, tutorial">
<title>git checkout</title>
</head>
<body>
<div class="corpo-central">
<div class="titulo">
<h1>>_ git checkout: Navegando entre ramos e snapshots, e descartando modificações</h1>
</div>
<article class="caixa-texto">
<h2>
Mudando de branch (ramo)
</h2>
<p>
Para mudar de um determinado ramo, digite:
</p>
<code class="caixa-codigo">
$ git checkout <nome_do_ramo>
</code>
<ul class="observacao">
<li>
<strong>$</strong> indica que você deve usar o <strong>usuário comum</strong> para fazer essa operação.
</li>
<li>
escolha o nome do ramo que você deseja, sem os sinais <strong>< ></strong>.
</li>
</ul>
<p>
Ao voltar para um determinado branch, o ponteiro <strong>head</strong> estará no <strong>último commit</strong> feito nesse ramo.
</p>
<ul class="observacao">
<li>
O <strong>HEAD</strong> é um ponteiro no branch que normalmente aponta para o último commit feito.
</li>
</ul>
<h2>
Navegando entre snapshots dos commits
</h2>
<p>
Às vezes é necessário verificar com detalhes quais modificações foram feitas no seu código/projeto. Então para navegar entre os <strong>snapshots</strong> fazemos:
</p>
<code class="caixa-codigo">
$ git checkout <chave_do_commit>
</code>
<p>
O que esse comando faz é apontar o <strong>HEAD</strong> para um determinado <strong>commit</strong>.
</p>
<p>
Para voltar um <strong>commit</strong> anterior, digite:
</p>
<code class="caixa-codigo">
$ git checkout HEAD~1
</code>
<ul class="observacao">
<li>
<strong>HEAD~1</strong> desloca o ponteiro HEAD para o <strong>commit anterior</strong> ao atual.
</li>
</ul>
<p>
Aqui é importante notar que será criado um <strong>branch temporário</strong>.
</p>
<p>
Você pode confirmar isso através do comando
</p>
<code class="caixa-codigo">
$ git branch
</code>
<p>
Exemplo:
</p>
<img class="exemplo" src="img/p0015-0.png" alt="branch temporária">
<p>
Nesse ponto, você estará visualizando as alterações que foram feitas até esse <strong>commit</strong>.
</p>
<p>
Após a visualização de todo o conteúdo do(s) arquivo(s), você pode voltar ao ramo principal com o comando:
</p>
<code class="caixa-codigo">
$ git checkout <nome_do_seu_branch_principal>
</code>
<p>
Exemplo:
</p>
<img class="exemplo" src="img/p0015-1.png" alt="voltando ao ramo master">
<p>
Aqui podemos ver uma mensagem onde é mostrado em que posição o ponteiro HEAD estava, ou seja, de onde viemos.
</p>
<p>
Exemplo de uso do checkout:
</p>
<p>
Temos no nosso ramo master os seguintes arquivos
</p>
<img class="exemplo" src="img/p0015-2.png" alt="listando arquivos no ramo master">
<p>
E queremos verificar o projeto no ponto indicado pela imagem abaixo
</p>
<img class="exemplo" src="img/p0015-3.png" alt="git log">
<p>
Sendo assim, fazemos
</p>
<img class="exemplo" src="img/p0015-4.png" alt="usando o checkout para ver um determinado commit">
<p>
Verificando novamente os arquivos do projeto, temos
</p>
<img class="exemplo" src="img/p0015-5.png" alt="listando os arquivo novamente">
<p>
Podemos perceber que temos alguns arquivos a mais que não tínhamos quando o <strong>ponteiro HEAD</strong> estava no <strong>último commit</strong>.
</p>
<p>
Aqui podemos ver todo o projeto como ele estava num <strong>commit passado</strong>. E então retornamos ao ramos principal.
</p>
<h2>
Fazendo alterações
</h2>
<p>
Caso seja necessário alterações no projeto em um snapshot passado, basta fazer um commit após essas alterações.
</p>
<p>
Para não perder as informações é necessário criar um novo <strong>branch</strong>, dessa maneira:
</p>
<code class="caixa-codigo">
$ git branch <nome_do_novo_ramo> <chave_do_útimo_commit>
</code>
<p>
Em seguida basta ir até o novo <strong>branch</strong> criado com o comando
</p>
<code class="caixa-codigo">
$ git checkout <nome_do_novo_ramo>
</code>
<p>
E, caso seja preciso, fazer o <strong>merge</strong> com o branch principal.
</p>
<p>
Exemplo:
</p>
<p>
Pegando o mesmo exemplo anterior, fiz um commit após algumas alterações.
</p>
<img class="exemplo" src="img/p0015-6.png" alt="commit no branch temporário">
<p>
Observe que após o <strong>commit</strong> houve uma mudança na chave
</p>
<img class="exemplo" src="img/p0015-7.png" alt="estado do git após o commit">
<p>
Como podemos perceber, essa é a chave do commit feito há pouco
</p>
<img class="exemplo" src="img/p0015-8.png" alt="git log">
<p>
Para que esse commit não seja perdido, temos que criar um novo branch com essa chave nova, assim
</p>
<img class="exemplo" src="img/p0015-9.png" alt="branch nova e chave nova">
<p>
Aqui, podemos confirmar que o novo branch foi criado
</p>
<img class="exemplo" src="img/p0015-10.png" alt="git branch">
<p>
Agora só precisamos voltar ao ramo principal
</p>
<img class="exemplo" src="img/p0015-11.png" alt="voltando ao ramo principal">
<p>
O que aconteceu aqui, no fluxo do Git, é algo semelhante ao mostrado na imagem abaixo.
</p>
<img class="fluxo-git" src="img/p0015-12.png" alt="fluxo do git">
<h2>
Observação:
</h2>
<ul class="observacao">
<li>
Recomenda-se usar o <strong>checkout</strong> para visualizar as snapshots dos commits apenas quando o <strong>Working directory</strong> estiver limpo, para evitar conflitos.
</li>
</ul>
<img class="exemplo" src="img/p0015-13.png" alt="working directory limpo">
<h2>
Descartando modificações
</h2>
<p>
O checkout também pode ser usado para descartar as modificações feitas em um arquivo, assim
</p>
<code class="caixa-codigo">
$ git checkout <nome_do_arquivo>
</code>
<p>
Exemplo:
</p>
<p>
Temos dois arquivos que foram modificados e queremos descartar as modificações (voltando ao arquivo anterior as mudanças).
</p>
<img class="exemplo" src="img/p0015-14.png" alt="dois arquivos modificados">
<p>
Usando com comando <code class="caixa-codigo-inline">git checkout</code> com os dois arquivos ao mesmo tempo:
</p>
<img class="exemplo" src="img/p0015-15.png" alt="usando o checkout para descartar alterações">
</article>
<nav>
<div class="nav-esquerda">
<a href="p0014_branch.html">
< anterior
</a>
</div>
<div>
<a href="index.html">
voltar ao índice
</a>
</div>
<div class="nav-direita">
<a href="p0016_reset.html">
próximo >
</a>
</div>
</nav>
<footer>
by danielle8farias
</footer>
</div>
</body>
</html>