-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgit.txt
482 lines (352 loc) · 13.2 KB
/
git.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
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
FERRAMENTA DE CONTROLE DE VERSÕES GIT
GERENCIAMENTO DOS ARQUIVOS DOS PROJETOS
DINÂMICA ENTRE WORKTREE E INDEX
( WORKTREE )( INDEX )
UNTRACKED UNMODIFIED MODIFIED STAGED
| | | |
|---------------|---add-file----|-------------->|
| |---edit-file-->| |
| | |--stage-file-->|
|<-remove-file--| | |
| |<------commit--|---------------|
DINÂMICA ENTRE WORKTREE INDEX HEAD
WORKTREE INDEX(STAGING AREA) .GIT (REPO)HEAD
arquivos área antes do commit commit atual
| | |
|<-------------checkout-|-----------------------|
|---stage fixes-------->| |
| |-------commit--------->|
| | |
master É o nome padrão da branch principal do seu repositório (renomeável).
pode haver N branches derivados deste para trabalho em partes específicas
de um projeto.
origin É o nome padrão do repositório remoto, (renomeável).
fork Obtenção de um projeto em paralelo ao original para modificações próprias.
PARA MAIS DETALHES LEIA O MANUAL MAN CORRESPONDENTE.
A DOCUMENTAÇÃO ON-LINE É A MESMA DAS PÁGINAS MAN
EM TUA DISTRO LINUX.
DESCRIÇÃO GENÊRICA DE CADA COMANDO
ET PRINCIPAIS OPÇÕES
CONFIGURAÇÃO
git
rastreador de conteúdo abestado.
git help
mostra informação de ajuda sobre o git.
git config
obter e definir repositório ou configurar opções globais.
--local local a um projeto no host.
--global para todos projetos no host.
user.email user.name
OBTENDO E CRIANDO PROJETOS
git init
criar repositório.
git clone
clonar repositório remoto ou outro.
BASIC
git status
mostrar o status da árvore de trabalho.
git add
adicionar_arquivo/atualizar_alterações para o repositório antes do commit.
git commit -m "text"
confirmar as mudanças definitivamente para HEAD.
"text" frase mínima de modificações.
git rm
remove arquivos do diretório de trabalho e do index.
git rm --cached remover do index, não da worktree.
git mv
move ou renomeia um arquivo, um diretório, ou um link simbólico.
git reset [opção] [commit]
redefine o HEAD atual para o estado especificado
--hard
--soft
--mixed
--merge
--keep
--[no-]recurse-submodules
git restore
restaura arquivos modificados da árvore de diretórios
de acordo com o último commit. Vide manual.
git notes
adicionar ou inspecionar notas dos objetos.
add copy append edit show merge remove prune
RAMIFICAÇÃO E MESCLAGEM
git branch
listar, criar, renomear ou deletar branches, pode ser pricipal ou derivadas.
git checkout
Mover-se entre ramificações ou restaurar arquivos da worktree
Atualiza arquivos na árvore de trabalho para corresponder à versão no INDEX
ou na árvore especificada.
Se nenhum pathspec foi fornecido, o git checkout também atualizará o HEAD
para definir o branch especificado como o branch atual.
vide switch.
-b <nova-branch>
git switch
mover-se entre ramificações do projeto.
git merge
mesclar ou mais branches forasteiras à corrente.
Resolução de confito:
git merge A B
CONFLITO !
EDITA ARQUIVO { remove delimitadores e corrige problemas }
git add file
git commit
RESOLUÇÃO CONCLUIDA
git mergetool
executar a ferramenta solucionadora de conflito de mescla (após merge geralmente)
git log
mostrar log dos commits.
--oneline #uma linha
--graph #gráficos
git stash
Guarde as alterações em um diretório de trabalho sujo.
list show drop pop apply branch save clear create store
git tag
Crie, liste, exclua ou verifique um objeto de tag assinado com GPG
Marcar pontos especificos na história como sendo importantes
Usado, geralmente, para marcar pontos onde foram feitos lançamento
de versões do projeto.
tipos:
LEVES: aponta para um commit específico
ANOTADAS: são um armazenamento completo de objetos no banco de dados do Git.
Elas têm checksum, contem marcações de nome, email e data; têm uma mensagem
de tag; e podem ser assinadas e asseguradas pela GPG (GNU Privacy Guard).
git tag -a v1.0 -m "versão 1.0 do Mércio"
$ git show v1.0
tag v1.0
Tagger: Vanessa Camargo <[email protected]>
Date: Sat May 3 20:19:12 2014 -0700
versão 1.0 do Mércio
commit ca82a6dff817ec66f44342007202690a93763949
Author: Mércio Jonilson <[email protected]>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
git worktree
Gerenciar multiplas árvores de diretórios
COMPARTILHAMENTO E ATUALIZAÇÃO DOS PROJETOS
git fetch
Baixar objetos e referências de outros repositórios.
Alterações no remoto feitas por terceiros desde que fizeste pull
porém não altera a worktree.
git fetch origin BRANCH-NOME:BRANCH-NOME # trazer ramificação do remoto
git pull
Incorpora mudaças de um repositório remoto.
git push
empurrar para remoto
git push <nome_do_remote_salvo> <nome_da_branch>
será solicitado nome de usuário e token de acesso ao repositório.
git remote
coisas referentes ao repositório remoto, como renomear, listar, adicionar ...
git remote add <nome> https://github.com/LPLA-br/repositório
git remote #para mostrar nome do remoto
git remote rename origin <novo_nome> #renomeando
git submodule
Inicializar, atualizar ou inspecionar submodulos
INSPEÇÃO E COMPARAÇÃO
git show
mostrar vários tipos de objetos do git.
Exemplo: tags
OBJETOS: HEAD <branch> etc...
git diff
mostra as mudanças entre commits, commit e a árvore de trabalho,
WORKTREE vs INDEX
--cached INDEX vs último_COMMIT
HEAD WORKTREE vs último_COMMIT
<commitA> <commitB> Commit vs Commit
git difftool
mostar mudanças usando ferramentas diff comuns.
git range-dif
compara dois limites de commit (e.g. duas versões de uma branch)
git shortlog
resumir a saída de git log.
git describe
Dê a um objeto um nome legível por humanos com base em uma referência disponível.
CORRECIONAMENTO
git apply
git cherry-pick
Aplique as alterações introduzidas por alguns commits existentes
git diff
Mostrar diferença entre commits, entre commit e worktree etc...
git rebase
Reaplicar commits em cima de outra ponta base.
git rebase -i HEAD~3 #reunir os três últimos commits.
git rebase -i COMMITDID #reunir de COMMITDIR até o mais recente.
pick <hexid>
1..N s <hexid> #squash
git revert <hexid>
reverter alguns commits existentes.
DEBUG
git bisect
Empregar a busca binária para encontrar o commit
que introduziu problemas ou mudaças indesejadas.
start
bad HEAD # vide arquivus directori
good <hexid>
git blame <file>
Show what revision and author last modified each line of a file
Mostrar qual revisão e autor modificou por último cada linha do arquivo.
C U L P A D O !
git grep
T R A B A L H O------C O L A B O R A T I V O------------------------------
Tipos de contribuição segundo Luiz:
Estensivo
Estende o trabalho pré existente. Menos suscetível a conflitos.
Modificativo
Modifica o todo ou partes de uma subparte. Mais suscetível a
conflitos.
·REPOSITÓRIO COMPARTILHADO
Todos os participantes tem permissão para alterar
(add, push, commit, pull, branch , ...)
Adequado: projetos com poucos colaboradores.
Comum em projetos mais reservados.
Problema !
Criação de ramificação.
Trabalho...
Solicitação de mescla para main se tudo
estiver certo (pull request).
·FORK & PULL
Todos os colaboradores trabalham em forks do projeto principal.
para incorporar trabalho é necessário enviar um pull request para
mantenedores do projeto.
Comum em projetos open source.
Problema !
FORK pessoal do projeto para tua conta.
Git clone
Trabalho...
Git commit & push
pull request para as modificações.
GITHUB
Code
Código fonte de um projeto.
Issues
Levantamento de problemas a serem corrigidos.
Fechamento de problemas resolvidos.
Problema pode voltar e ser resolvido em seguida.
Pull request
Ações de incorporação de modificações advindas
dos colaboradores.
Wiki
Esta parte é extremamente importante pois é a
documentação de como utilizar o software ou
biblioteca desenvolvida no projeto.
--------------------------------------------------------------------------
·Issues clone
·Pull Requests (solicitação de puxamento). push et pull, fetch
·Alternativas ao github: sourceforge,bitbucket...
·Unindo plurimos commits em um só. rebase
·Trazer um commit especifico de uma branch para HEAD da branch atual: cherry pick
·O ponto que que uma alteração foi realizada, Descobrindo bug.
bisect, revert, add, commit.
·Quem é o responsável/culpado por uma alteração? git blame
·main → produção ( códigos testados e aprovados prontos para implementação )
não commitar na main. Cria branch para isto.
·ramificações para: incrementos e modificações(cuidado com conflitos):
branch,checkout,switch
main
|_development
| |_feat/painel
| |_feat/requisicoes
|_release/v1.1.0
|_hotfix/v1.0.1
GIT FLOW TRADICIONAL
1.0 1.1 1.2
main________C____C_______________________C
hotfix______|_\/ release R____R_/
develop_____|_ \______________/______\____
feature______\.__________.__./
PERMANENTES
main
A ramificação principal do projeto que mantém o código
testado e aprovado para ser implantado em produção real
cada commit aqui recebe a etiqueta do versionamento semântico.
develop
A ramificação criada no início do projeto e que é mantida
atualizada durante o processo de desenvolvimento.
Esta mantém o código pré-produção e novas funcionalidades
em teste. Novas funcionalidades devem ser ramificações
derivadas de develop, quando prontas para teste, são
mescladas à ramificação develop.
AUXILIARES/TEMPORÁRIAS
release
Trata-se de uma ramificação criada de dev quando esse
adquiriu recursos suficientes para um lançamento.
o trabalho nas ramificações de lançamento consiste em
testes em busca de bugs e problemas para correção in loco
e documentação.
feature
A ramificação das novas funcionalidades para o código.
Quando trabalha-se em uma nova parte, esta é ramificada
de develop. Após trabalhar em tal ramificação, verificando
e examinando as modificações, faz-se a mescla desta com
develop.
hotfix
Mudanças urgentes para a ramificação main. se invocada,
deve ser mesclada para main e develop. Geralmente serve
para corrigir erros críticos e falhas de segurança.
OUTRAS
docs
Documentação de api, manuais do usuário e etc...
perf
Performance de uma funcionalidade (aprimoramento de algoritmos)
refactor
Refatoração de código fedorento
Uma alteração feita na estrutura interna do software para torná-lo mais
fácil de entender e mais barato para modificar sem alterar seu comportamento
observável. Aqui pode ser feita avaliações para melhor adequação aos padrões de
projeto: Arquitetura, escrita, organização, formatação e etc...
test
Ramificação de testes automáticos ou manuais em partes do projeto
(não passível de release devido a natureza do projeto).
OUTRAS
O projeto pode adicionar novas categorias de ramificações
de acordo com as necessidades do ambiente de desenvolvimento.
https://medium.com/prolog-app/nossos-padr%C3%B5es-de-nomenclatura-para-branches-e-commits-fade8fd17106
NOMENCLATURA DE RAMIFICAÇÃO EM III PARTES
TIPO DA RAMIFICAÇÃO:
docs documentação
feat funcionalidade
fix correção de bugs
perf performance
refactor refatoração
style estilo no código {padrões na escrita do código}
test adicionar ou corrigir testes
hotfix correção de bugs do main em produção
release lançamento (vide supra)
TRABALHO:
docs-funçãoAutenticadora-
CÓDIGO DE TAREFA SE EXISTIR:
docs-funçõesHashAlpha-69
ESTRUTURA DA MENSAGEM DE COMMIT
______________________________________
|<tipo> (?escopo) <descrição_imperativa>
|<?body detalhamento>
|<?footer pequenas infos como tarefa>
EXEMPLO:
docs (funçõesHashAlpha): descreve as funções de hash alpha X69.
fix (moduloAutenticador): corrige problema com caracteres pontuais.
PERMANENTES | TEMPORÁRIAS
MAIN________|_hotfix
| | |__|_release
DEVELOP__|__|_feature
VERSIONAMENTO SEMÂNTICO - BASICÃO
0.0.0
| | |
|_|_|_Major: Representa uma versão incompatível ou alguma
| | alteração drástica no projeto. redefine Minor e patch.
| |
|_|_Minor: Representa novas funcionalidades do projeto.
| redefine para zero todos os patches anteriores quando
| incrementado.
|
|_Patch: informar hotfixes→não alteram funcionalidade da aplicação,
entretanto corrigem bugs. Incrementa N vezes.
Atente-se à arquitetura do projeto.
·git desktop, git cola (ferramentas gráficas para o git)
·git kraken (ferramentas gráfica para git flow)
.Eventos git
Execução de shellscript padrão em resposta a eventos
do git
.git/hooks/SCRIPT-NAME.sample
CÓPIA PRÓPRIA COM MODIFICAÇÕES:
.git/hooks/SCRIPT-NAME
verifique as permissões de execução.
--------------------------------------------------------------------------