-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGit
221 lines (156 loc) · 7.74 KB
/
Git
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
# Introdução:
O trabalho com git na maior parte do tempo consiste em três tarefas básicas:
-- Editar
-- Commitar
-- Sincronizar com o repositório remoto
# Configuração:
git config --global user.name "Nome User"
git config --globar user.email "[email protected]"
# Update de repositórios:
git add <nome file> - Adiciona um arquivo para push no git.
git add . - Adiciona os arquivos da pasta ao commit.
git commit - Um editor é aberto para escrever sobre a mudança | git commit -m "Atalho para comentário"
git status - Status geral do git.
git log - Ver lista de commit, autor e data. Mostra basicamente informações dos últimos commits realizados.
git push <remote> <branch> - Aqui empurramos um update para uma branch especifica.
- Branch são versões separadas do projeto principal. Estas podem ser utilizadas em testes e receberem um "merge" assim que o teste for
homologado.
git config --global core.editor vim
#State de arquivo
- untracked = Não monitorado
- modified = Modificado
- staged = Preparado
- commited = Consolidado
git diff - DIferença entra commits e branchs
Ex: git diff e3r3324534 wr123q2321 - DIferença entre commits e branchs
gir diff HEAD~1 - HEAD aponta para o último commit da branch.
~1 = Compara o que existe no repositório local com o commit anterior.
git pull - Baixar commit dos colaboradores. (Sincronização)
# Colaboradores
Colaboradores são capazes de enviar push para meu repositório.
# Git Checkout
git checkout <commit> <file> - Fazer navegação no histórico do repositório.
Neste comando os arquivos de um commit anterior é carregado.
Ex:
```
commit 4b4e311aa3add26272115e3304a90f9ccf9d6d72
Author: Jean Lima <[email protected]>
Date: Mon Jul 10 15:36:03 2023 -0300
```
Ex: git checkout 4b4e311aa3add26272115e3304a90f9ccf9d6d72
Para retornar para a branch principal basta:
git checkout main
O checkout vai alterar todo o estado para o estado atual do commit escolhido.
# Outros usos para Git Checkout:
Desfaz uma alteração em um arquivo ou pasta com base no último commit:
git checkout -- Git ou git checkout -- .
# Caso a alteração já tenha sido adicionada com git add, basta:
git checkuot HEAD -- <path_file>
# Git REVERT vai reverter um commit:
Vai reverter toda e qualquer aleteração, se você apagou uma linha, ele vai adicionar. Se você criou uma linha, ele vai remover.
Ex: git revert HEAD <commit>
Após rodar o comando o arquivo alterado, será revertido.
# git reset - ATENÇÃO: NÃO UTILIZAR EM CASO DE DE COMMIT PÚBLICADO, POIS UMA PESSOA PODE JÁ TER BAIXADO.
git reset HEAD~1 *Neste exemplo voltamos 1 COMMIT conforme definido.
git reset HEAD~1 --soft = Este utiliza o --soft por padrão, logo não precisa informar. Deixa as alerações como estão.
git reset HEAD~1 --hard = Além de apagar o commit volta para o status do commit do estado anterior. Neste caso especificou-se "~1" isso indica
que o retorno vai ser 1 commit atrás --hard voltando para o status do commit anterior.
# Conflitos:
Gerindo coflitos no GIT. Isso ocorre quando a mesma linha é editada em diferentes locais de colaboração.
# Exemplo de uso para a criação de um repositório:
# Cria uma nova pasta chamada "Study"
mkdir Study
# Navega para a pasta "Study"
cd Study/
# Inicializa um novo repositório Git na pasta "Study"
git init
# Configura o nome de usuário para os commits
git config user.name "Jeancmdl"
# Configura o email do usuário para os commits
git config user.email "[email protected]"
# Cria um arquivo chamado "teste" com o conteúdo "1"
echo "1" > teste
# Adiciona todas as alterações para o próximo commit
git add .
# Commit das alterações com uma mensagem "Only test"
git commit -m "Only test"
# Adiciona um remote chamado "origin" com o URL do repositório
git remote add origin [email protected]:Jeancmdl/Study.git
# Verifica os remotes configurados
git remote -v
# Realiza o push para o branch "master" no remote "origin" e configura a upstream
git push -u origin master
# Branch
Concatenar conteudo de uma branch na branch atual.
Criar uma branch nova:
git branch <nova_branch>
Alterar para um nova branch:
git checkout <nome_nova_branch>
Criar a nova branch no repositório remoto:
git push --set-upstream origin <nome_brench_criada>
Remover uma branch:
git branch -d <nome_brench_a_remover>
# Merge
Quando precisamos concatenas mudanças entre branchs distintas usamos o comando 'git merge'.
Ex:
branch1 (homologacao)
branch2 (produção)
Se quisermos concatenar infrmações da branch de 'homologação' na branch de produção, basta rodar o 'git merge' estando
na branch de 'produção'.
Ex:
git checkout producao - Alteramos para a branch de produção (revise com git branch)
git merge homoloogacao - Commit é criado junto ao merge.
git push - Empurramos a mudança para o servidor de versionamento.
# Rebase
Usar em situações onde existêm divergência entre versões de branch no sentido de criação de novos arquivos, onde não há muitas possibilidades de
conflito.
Um exemplo de uso é quando recebo um código com commits atrás do meus commits, e preciso incluir estes commits anteriores ao meus, assim aplicamos um rebase.
Caracteristicas:
- Cria um linha linear de visualização de andamento do projeto.
- "Remove" último commit, aplica os commits da outra branch e por fim commita as alterações do commit removido por último.
Como usar:
git checkout master
git rebase producao
-- Resolvo eventuais conflitos e adiciono o arquivo ajustado
git add . = Uso em caso de conflito
git rebase --continue = Uso em caso de conflito
# Git fetch
Baixa as atuaalizações do repositório remoto porém não aplica no repositório.
- Melhor para manter o histórico do desenvolvimento, não cria um commit a mais de merge.
Basicamente isso se aplica quando estamos em um repositório local desatualizado em relação ao nó remoto. Ou seja, novos commits
foram gerado. Deste modo acabei editando este repositório local e preciso inserir meu código neste repositório remoto.
Comandos:
git getch = Baixa as informações atualizadas.
git rebase = Junta as informações novas com as que possuo na branch local.
git status = Verifica arquivo de conflito ajustado
git add . = Adiciona arquivo ajustado
git rebase --continue = Continua o rebase após ajustar ocnflitos.
git push = Envia para o repositório remoto.
# Git Tag
- Util para definir versões estáveis do projeto.
- Tag é semelhante a uma branch, com a diferença de que ela não recebe mais commits.
Criar a tag:
git tag v1.0
Ver tag:
git tag
Enviar tag para o repositório remoto:
git push origin v1.0
Acessando um repositório em uma tag especifica:
git checkout v.10 = Neste modo vocêe vê o projeto na versão especificada.
git checkout master = Volta para a branch atual.
Poblema:
Em caso de lançamentos que afetam versões anteriores do software, não é uma boa prática usar tag, pois estas não recebem novos commits. Assim podemos
optar por uso de branchs.
# Fork
Este é o formato utilizado para colaborar em projetos OpenSource. Basicamente você faz uma cópia do repositório para seu usuário, assim consegue
trabalhar em melhorias para o projeto. Quando finalizado estas melhorias podem ser solicitadas um Pull Request para o projeto principal.
# Issues
- Reporte de bugs/tarefas que precisam ser ajustadas ou realizadas.
Quando aberta podemos marcar direto pela interface seu tipo, responder, solicitar ajuda.
Podemos fechar através de um commit com o comentário "Meu texto. Closes #1"
# Pull Reuest
- Simbolo de colaboração.
- Solcita que suas alteraçõe sejam unidas a uma branch ou repositório que sofreu fork.
# Download Pull request in my repository:
get fetch origin pull/ID/head:NOME_NOVA_BRANCH
git checkout NOME_NOVA_BRANCH