-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgit-dicas.txt
271 lines (187 loc) · 6.73 KB
/
git-dicas.txt
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
RESUMO DE USO - GIT
git config
=======================================================
>> git config --global user.name "Adao Oliveira"
>> git config --global user.email "[email protected]"
>> git config --global core.editor subl
>> git config --global alias.s status
>> git config --list
git init
=======================================================
Inicia um repositório em branco.
git status
=======================================================
* Opera na staging area e working directory
>> git status -s | --short
* Colunas no status de saída curto
- Coluna esquerda: status da staging area
- Coluna direita: status no workdir
M indica arquivos modificados
A indica arquivos adicionados
? indica arquivos não rastreados
git add
=======================================================
>> git add <arquivo>
git commit
=======================================================
>> git commit -m "Comentário a ser inserido"
>> git commit -am "Comentário - Novo commit + add juntos"
Corrige o último commit (mensagem ou algum arquivo esquecido)
>> git commit --amend
git log
=======================================================
* Opera nos snapshots commitados
>> git log
>> git log -2 # mostra apenas os dois ultimos commits
>> git log -p | --patch
>> git log --stat
>> git log --shortstat
>> git log --decorate
>> git log -S <nome_funcao>
>> git log --pretty=oneline|short|full|fuller
>> git log --graph
>> git log --since | --after | --until | --before
>> git shortlog
>> git log --name-only
>> git log --name-status
git restore
=======================================================
recupera a última versão commitada de um determinado arquivo,
descartando as alterações na staging area
git diff
=======================================================
>> git diff
>> git diff --staged
>> git diff --name-only
git rm
=======================================================
Remove arquivos da working tree e do index
>> git rm
>> git rm -f
>> git rm --cached <arquivo>
git branch
=======================================================
Listar todos o branchs:
>> git branch
Listar todos o branchs, _exibindo o último 'commit'_:
>> git branch -v
Listar todos o branchs (locais e remotos):
>> git branch -a
Listar todos o branchs remotos:
>> git branch -r
Listar todos o branchs já "mergeados" com o atual:
>> git branch --merged
Listar branchs NÃO "mergeados":
>> git branch --no-merged
Remover um branch que já foi "mergeado":
>> git branch -d <nome_branch>
Remover um branch que ainda NÃO foi "mergeado":
>> git branch -D <nome_branch>
Força um ramo a apontar para um determinado commit:
>> git branch -f <ramo> <commit>
git cherry pick
=======================================================
git rebase
=======================================================
Consiste em pegar todas as mudanças _comitadas_ em um branch
e reaplicá-las em outro branch, a partir de um 'commit' comum.
A sequência de um 'rebase' é:
1) Buscar um ancestral comum entre 2 branchs;
2) Pegar as diferenças introduzidas por cada 'commit' do branch atual
e gravar em arquivos temporários;
3) Resetaro branch atual para o mesmo ponto do branch que se deseja
fazer o 'rebase' e depois aplicar as mudanças, uma a uma.
Como fazer o 'rebase'?
Passo 1) Ir para o branch em edição e executar o 'rebase':
>> git checkout experiment
>> git rebase master
Passo 2) Retorna para o branch master e executa 'merge':
>> git checkout master
>> git merge experiment
==> Vantagem do 'rebase' em relação ao 'merge':
* Apesar do resultado final ser o mesmo snapshot, com o 'rebase' o
histórico fica mais limpo. No resultado final, o histórico fica
parecendo com um trabalho em série, mesmo que tenha sido feito em
paralelo.
git merge
=======================================================
git tag
=======================================================
Marca commits como importantes (release points)
Podem ser de dois tipos:
* lightweight - Apenas um ponteiro para um commit
* annotated - Armazenadas como um objeto completo
>> git tag -a v1.0 -m "Versão estável 1.0"
git show
=======================================================
>> git show <hash>
>> git show <tag>
git revert
=======================================================
Desfaz um commit específico, aplicando um outro commit.
* Opera nos snapshots commitados.
git clean
=======================================================
Remove arquivos untracked.
>> git clean -f
git remote
=======================================================
Adicionar um repositório remoto:
>> git remote add <apelido> <url>
==> O nome padrão de um repositório remoto é 'origin'.
Listar repositórios remotos:
git remote -v
Inspecionar um repositório remoto:
>> git remote show <nome-repositório>
Renomear um repositório remoto:
>> git remote rename <nome-atual> <novo-nome>
Remover um repositório remoto:
>> git remote remove <nome>
git fetch
=======================================================
==> Observação: 'git fetch' apenas faz o download das atualizações.
Não é feita nenhuma modificação (_merge_) entre os dados locais e
os dados baixados.
Busca do repositório remoto toda informação que foi adicionada após
execução de um 'git clone' ou 'git fetch':
>> git fetch origin
git pull
=======================================================
Executa automaticamente 'fetch' e 'merge' de um branch remoto
com o branch local:
>> git pull <nome> [branch]
git push
=======================================================
Envia dados para um repositório remoto:
>> git push <nome> [branch]
Removendo um branch remoto:
>> git push origin --delete <branch>
*usar o flag -u para forçar o push
git stash
=======================================================
Guarda o que está na staging area e no working directory em um 'local separado'
>> git stash
>> git stash list
>> git stash pop
>> git stash apply
>> git stash clear
git checkout
=======================================================
Retorna arquivo à última versão do commit (desfaz modificações)
>> git checkout -- <arquivo>
Cria um novo branch e já alterna para o mesmo
>> git checkout -b <nome_branch>
Obs.: Na movimentação, pode-se usar referências relativas:
* git checkout HEAD^ move-se para cima 1 commit por vez
* git checkout HEAD~3 move-se para cima n commits
git reset
=======================================================
Opera em working directory e staging area.
Ignora modificações de arquivos (após add, antes do commit) - retorna para 'unstage'
>> git reset HEAD <arquivo>
Muda todos os arquivos tracked para versão do commit mais recente.
>> git reset --hard
Retorna para 'unstaged'
>> git reset HEAD --soft <hash-anterior>
git reset HEAD --mixed <hash-anterior>
git reset HEAD --hard <hash-anterior>