Guest User

Untitled

a guest
Jul 21st, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.84 KB | None | 0 0
  1. # GIT - Comandos
  2.  
  3. ## Comandos básicos/inciais
  4.  
  5. ```sh
  6. # Baixa o repositório/projeto na sua maquina. O projeto será criado em uma pasta de mesmo nome que o repositório.
  7. $ git clone [uri_do_repositorio]
  8.  
  9. # Para que o projeto seja criado em uma pasta com outro nome basta no fim do comando especificar o nome desejado:
  10. $ git clone [uri_do_repositorio] [nome_da_pasta]
  11. ```
  12.  
  13. ```sh
  14. # Obtem as atualizações do repositório e branch remotos:
  15. $ git pull [alias_do_repositorio] [branche_do_repositorio]
  16.  
  17. # Exemplo:
  18. $ git pull origin master
  19. ```
  20.  
  21. ```sh
  22. # Verificar todas as alterações realizadas no repositório referente ao alias:
  23. $ git fetch [alias_do_repositorio]
  24.  
  25. # Exemplo
  26. $ git fetch origin
  27. ```
  28.  
  29. ```sh
  30. # Envia os commits locais para o repositório e branche remotos especificados
  31. $ git push [alias_do_repositorio] [branche_do_repositorio]
  32.  
  33. # Exemplo:
  34. $ git push origin develop
  35. # Caso a branch develop não exista remotamente ela será criada
  36.  
  37. # É possível trackear a branch local com a remota que será criada utilizar o parâmetro -u:
  38. $ git push -u origin teste
  39. # (Após trackear a branch quando fizer push e pull não é mais necessário informar o repositório e branch, bastando fazer o git push, por exemplo)
  40. ```
  41.  
  42. ```sh
  43. # Adiciona um repositório remoto.
  44. $ git remote add [alias_do_repositorio] [uri_do_repositorio]
  45. # (O alias do repositório remoto por convenção deve-se chamar "origin")
  46. # (A URI é aquela que é oferecida para cada repositório no servidor remoto (Github, Bitbucket, ...))
  47.  
  48. # Quando utilizamos um git clone não é necessário adicionar um repositório remoto pois o clone já faz isso e já utilizando o alias "origin".
  49. ```
  50.  
  51. ## Histórico de Alterações
  52.  
  53. ```sh
  54. # Exibe o histórico dos últimos commits.
  55. $ git log
  56.  
  57. # com o parametro -p exibe o histórico dos últimos commits exibindo o que foi alterado em cada arquivo:
  58. $ git log -p
  59.  
  60. # para exibir um resumo dos commits usar o parametro --stat:
  61. $ git log --stat
  62.  
  63. # também é possível definir a quantidade de informações que serão exbibidas no log com o atributo --pretty passando como parâmetro um das opções: oneline, short, medium, full, fuller, email, raw. Para exibir um commit por linha por exemplo:
  64. $ git log --pretty=oneline
  65.  
  66. # para exibir um grafico do andamento das branchs e commits é possível utilizar o parâmetro --graph, inclusive pode ser usado em conjunto com outros se preferir:
  67. $ git log --pretty=medium --graph
  68. ```
  69.  
  70. ```sh
  71. # Exibe o histórico dos últimos commits mostrando quais arquivos foram alterados.
  72. $ git whatchanged
  73.  
  74. # É possível incluir o parâmetro -p no final do comando para mostrar também o que foi alterado em cada arquivo:
  75. $ git whatchanged -p
  76. ```
  77.  
  78. ```sh
  79. # Exibe quem foi o autor de cada linha do arquivo especificado.
  80. $ git blame [arquivo]
  81. # (Para sair do blame pressione Q)
  82. ```
  83.  
  84. ```sh
  85. # Exibe todas as alterações feitas no commit
  86. $ git show [hash_do_commit]
  87.  
  88. # Exemplo
  89. $ git show b657bcf4f28a8a5c8eea56a3b6eb26e72cc39e39
  90. ```
  91.  
  92. ### Customizando o git log
  93. É possível customizar o atributo pretty, por exemplo:
  94. ```sh
  95. $ git log --pretty='%an realizou commit em %ad: %s'
  96. ```
  97. Onde:
  98. * **%an** -> nome do autor
  99. * **%ad** -> data e hora do commit
  100. * **%s** -> mensagem do commit
  101.  
  102. Para outras opções utilizar o git log --help
  103.  
  104. ## Branchs
  105.  
  106. ```sh
  107. # Exibe todas as branchs locais. A branch com um * na frente do nome faz referência a qual branch você se encontra.
  108. $ git branch
  109.  
  110. # Para ver as branchs remotas inclua o paramêtro -r:
  111. $ git branch -r
  112.  
  113. # Para ver todas as branches, tanto remoto quanto local usar o parâmetro -a:
  114. $ git branch -a
  115.  
  116. # Cria uma branch local com o nome especificado.
  117. $ git branch [nome_da_branch]
  118.  
  119. # Deleta a branch especificada. Pode-se passar também várias branches separadas por espaço.
  120. $ git branch -d [nome_da_branch]
  121.  
  122. # Criar uma nova branch local trackeada (-t) com uma remota já existente:
  123. $ git branch -t [nome_da_branch] [alias_do_repositorio]/[branche_do_repositorio]
  124.  
  125. # Exemplo:
  126. $ git branch -t novo origem/novo
  127. ```
  128.  
  129. ```sh
  130. # Troca a branch para a especifícada.
  131. $ git checkout [nome_da_branch]
  132.  
  133. # Se utilizar o parametro -b com o nome de uma branch ele cria a branch e já faz checkout pulando um passo:
  134. $ git checkout -b [nome_da_branch]
  135.  
  136. # É possível criar uma branch local com o mesmo nome que uma remota e já fazer o checkout para ela com o parâmetro -t e outros detalhes:
  137. $ git checkout -t [alias_do_repositorio]/[branche_do_repositorio]
  138.  
  139. # Exemplo:
  140. $ git checkout -t origin/tarefa_123
  141.  
  142. # Deleta uma branch remota:
  143. $ git push [alias_do_repositorio] :[branch_do_repositorio]
  144.  
  145. #Exemplo:
  146. $ git push origin :minhabranch
  147. ```
  148.  
  149. ## Merges
  150.  
  151. ```sh
  152. # Jogar todos os comits da [branch_de_referencia] na frente dos seus commits
  153. ### você deve estar na branch que receberá os commits da [branche_de_referencia]
  154. ### importante a [branch_de_referencia] estar atualizada (git pull) para ter efeitos redundantes
  155. $ git rebase [branch_de_referencia]
  156.  
  157. # Exemplo:
  158. $ git rebase master
  159.  
  160. # Este comando joga commit por commit na sua branch, caso um destes commits de conflito (git status através da informação 'both modified' exibe quais arquivos deram conflito) após resolver o conflito (e adicionarmos com add) usar continue para dar continuidade no rebase:
  161. $ git rebase --continue
  162.  
  163. ## caso desista do rebase e queira voltar como sua branch estava antes use:
  164. $ git rebase --abort
  165.  
  166. ## caso queira descartar o SEU commit que está gerando o conflito usar:
  167. $ git rebase --skip
  168.  
  169. # Funciona da mesma forma que o rebase tradicional com a diferença que pode ser feito de qualquer lugar não necessariamente da branch de destino.
  170. $ git rebase [branch_de_referencia] [branch_destino]
  171.  
  172. ## Exemplo
  173. $ git rebase master minhabranch
  174. ```
  175.  
  176. ```sh
  177. # Faz um merge (trás os últimos commits) da branch_a_mergear para a branch atual
  178. $ git merge [branch_a_mergear]
  179. ## normalmente este processo é feito com branches que sairam uma da outra, como mergear a branc X de volta na master pois a X está concluída mas foi criada baseada na master
  180.  
  181. # Exemplo
  182. $ git merge minhabranch
  183. ```
  184.  
  185. ## Desfazer alterações
  186.  
  187. ```sh
  188. # Reverte as modificações de um arquivo que esteja em Working Directory
  189. $ git checkout [nome_do_arquivo]
  190.  
  191. #Exemplo
  192. $ git checkout MinhaClasse.java
  193.  
  194. ## se por um acaso o arquivo possuir o mesmo nome que uma branch ao invés de reverter o arquivo este comando irá fazer um checkout para a branch, neste caso utilizar --:
  195. $ git checkout -- arquivo
  196.  
  197. # Copiar um arquivo para que ele fique igual a como ele se encontra em outra branch [nome_branch]
  198. $ git checkout [nome_branch] [nome_do_arquivo]
  199.  
  200. ## Exemplo (deixa o arquivo Teste.java na minha branch igual a como está na master)
  201. $ git checkout master Teste.java
  202. ## este comando copia o arquivo e já o deixa no Index pronto para ser commitado
  203. ```
  204. ```sh
  205. # Remove um commit do Index (colocado após o add) retornando para Working Directory
  206. $ git reset HEAD [nome_do_arquivo]
  207.  
  208. # Exemplo
  209. $ git reset HEAD meuprojeto/src/com/testes/Classe.java
  210. ```
  211.  
  212. ```sh
  213. # Joga tudo o que está no Index e em Working Directory para o stash
  214. $ git stash
  215.  
  216. # Lista todos os estados que estão no stash
  217. $ git stash list
  218.  
  219. # Retorna para o código o último estado enviado ao stash e apaga este estado da lista do stash
  220. $ git stash pop
  221.  
  222. ## para retornar um estado especifico do stash e não o último é possível passar o nome do estado:
  223. $ git stash pop stash@{3}
  224.  
  225. # Tem o mesmo efeito do pop para trazer o último estado ao código porém com a diferença que mantém no stash uma cópia
  226. $ git stash apply
  227.  
  228. ## Para apagar do stash então é necessário utilizar o git stash drop passando o nome do estado a ser removido:
  229. $ git stash drop stash@{0}
  230.  
  231. ## agora se a ideia é só apagar o último basta:
  232. $ git stash drop
  233.  
  234. ## para retornar um estado especifico do stash com o apply e não o último é possível passar o nome do estado:
  235. $ git stash apply stash@{3}
  236.  
  237. ## para 'zerar' o stash pode-se utilizar o comando:
  238. $ git stash clear
  239. ```
  240.  
  241. ```sh
  242. # Retorna a base do projeto para o commit do hash informando e todos os commits após este são removidos (do Head) e jogados novamente no código como Working Directory
  243. $ git reset [hash_do_commit]
  244.  
  245. # Exemplo
  246. $ git reset 12ec2eb6cba5e1021e8ed609ac26188397dc8ed2
  247. # (para saber o hash do commit basta utilizar o git log)
  248.  
  249. # se desejar trazer diretamente para o index ao Invés de Working Directory utilizar o parâmetro --soft:
  250. $ git reset --soft 12ec2eb6cba5e1021e8ed609ac26188397dc8ed2
  251.  
  252. # se quiser simplesmente descartar os commits sem trazer o código do commit para o seu código atual usar --hard:
  253. $ git reset --hard 12ec2eb6cba5e1021e8ed609ac26188397dc8ed2
  254. ```
  255.  
  256. ==============rever este comando pois não funcionou==============
  257. ```sh
  258. # Remove as alterações feitas em um determinado commit abrindo um editor de texto para que possa definir a mensagem do commit de reversão.
  259. $ git revert [hash_do_commit]
  260. # (para saber o hash do commit basta utilizar o git log)
  261.  
  262. # Exemplo
  263. $ git revert 658ed785d5e5c933d6ccead69b5d1801dd52e331
  264. # (é possível utilizar o comando -n para que as alterações revertidas sejam adicionadas no Working Directory, assim podendo fazer outras alterações e commitar)
  265. ```
  266. ==============================================================
  267.  
  268. ```sh
  269. # Troca a mensagem do seu último commit. Após executar o comando será pedido a nova mensagem.
  270. $ git commit --amend
  271. ```
  272.  
  273. ## Outros
  274.  
  275. ```sh
  276. # Exibe todas as tags do projeto.
  277. $ git tag
  278. ```
  279.  
  280. ```sh
  281. # Faz com que o repositório vá para a versão da tag especificada.
  282. $ git checkout [tag]
  283. ```
  284.  
  285. ```sh
  286. # Diferenciar duas vesões.
  287. $ git diff [tag1] [tag2]
  288. # (Para sair do diff pressione Q)
  289. ```
  290.  
  291. ## Apêndice
  292.  
  293. ### Estados do GIT
  294. * **Working Directory:** arquivo foi alterado mas ainda não foi adicionado ou commitado
  295. * **Index:** arquivo já foi adicionado mas não foi commitado
  296. * **Head:** arquivo já foi commitado
  297.  
  298. ### Alias do GIT
  299. * **HEAD** -> referencia o último commit
  300. * **HEAD~1** -> referencia o penúltimo commit
  301. * **HEAD~2** -> referencia o antipenúltimo commit
  302. * **HEAD~n** -> e assim por diante
  303.  
  304. **HEAD^** -> outra forma de referencia o penúltimo commit (igual a HEAD~1)
Add Comment
Please, Sign In to add comment