NuIEEE - Workshop de Git

291 views

Published on

Workshop de Git pelo Núcleo Universitário do Porto IEEE

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
291
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

NuIEEE - Workshop de Git

  1. 1. Workshop de Git por José Bateira jose.l.bateira@ieee.org NuIEEE nuieee@fe.up.pt
  2. 2. Agenda Introdução a RCS (aka sistemas de controlo de versões) Conceitos básicos de Git Comandos básicos de Git Hands on: Git your project!
  3. 3. Introdução RCS - Revision Control System = Sistema de Controlo de Versões Porquê? ➔ reverter código para versões anteriores (quando o programa ainda funcionava) ➔ ctrl+z não chega ➔ trabalho em equipa ➔ nada de zip/rar por email ou dropbox...
  4. 4. Introdução RCS - Source Control Managment SCM - Para além do Git CVS Mercurial Subversion (svn) BitKeeper Git
  5. 5. Introdução Git SCM - Source Control Managment Desenvolvido em 2005 por Linus Torvalds (Criador do GNU/Linux) Optimizado para Desenvolvimento Distribuído Projetos de grandes dimensões Juntar código (merge) complexo Fazer experiências (branchs)
  6. 6. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js ├── div.js ├── fact.js ├── mult.js └── sub.js working tree Working tree/directory
  7. 7. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js ├── div.js ├── fact.js ├── mult.js └── sub.js working tree Gestão de alterações da working tree Adicionar Editar Eliminar
  8. 8. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js commit e7c0d3d filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js commit commit a1f84f5 filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js commit eec9901 Representação em Grafo filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js
  9. 9. Git Conceitos Básicos commit f7c5b39 filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js commit e7c0d3d filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js Representação em Grafo commit filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js commit a1f84f5 commit eec9901 filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js
  10. 10. Git Conceitos Básicos commit f7c5b39 filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js commit e7c0d3d filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js HEAD -> Onde estou HEAD filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js commit a1f84f5 HEAD commit eec9901 filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js
  11. 11. Git Conceitos Básicos commit f7c5b39 filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js HEAD commit e7c0d3d filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js HEAD -> Onde estou HEAD filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js commit a1f84f5 commit eec9901 filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js
  12. 12. Git Conceitos Básicos commit f7c5b39 filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js commit e7c0d3d filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js HEAD -> Onde estou HEAD filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js HEAD commit a1f84f5 commit eec9901 filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js
  13. 13. Git Conceitos Básicos commit e7c0d3d filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js Branch -> marker Branches filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js HEAD master bugfix filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js
  14. 14. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js HEAD master Branches
  15. 15. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js Branches HEAD master
  16. 16. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js Branches filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js HEAD master
  17. 17. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js Branches HEAD bugfix filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js master
  18. 18. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js Branches filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js master HEAD bugfix filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js
  19. 19. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js HEAD bugfix filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js Merge filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js master
  20. 20. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js Merge filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js HEAD master bugfix
  21. 21. Git Conceitos Básicos filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js Merge filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js HEAD master
  22. 22. Git Conceitos Básicos Tags v0.2 v0.1 filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── mult.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js v0.2.1 filetree/ ├── doc │ ├── v0.1.0.txt │ ├── v0.2.0.txt │ ├── v0.6.0.txt │ ├── v1.0.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js* │ └── main.js └── tests ├── add.js* ├── div.js ├── fact.js ├── mult.js └── sub.js HEAD master
  23. 23. Git Conceitos Básicos Boas práticas Como usar branchs e tags? ➔ Branches: feature, bugfix, ... ➔ Tags: releases Cada projeto é único e tem exigências diferentes. Cada caso é um caso com regras diferentes. Mas tem de haver regras a cumprir!
  24. 24. Git Conceitos Básicos Boas práticas A successfull Git branching model by Vincent Driessen http://nvie.com/posts/a-successful-git-branching-model
  25. 25. Git Comandos Básicos init, add, status, commit Enough talking… where’s the code?! $ git init # cria a pasta .git $ git add <file> # adicionar ficheiros para o commit $ git commit # commit $ git status # estado da working tree e do index
  26. 26. Git Comandos Básicos HEAD filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ └── lib1.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js ├── mult.js └── sub.js master commit e7c0d3d Staging area / index filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ ├── lib1.js │ └── lib2.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js ├── mult.js ├── div.js └── sub.js
  27. 27. Git Comandos Básicos Staging area / index commit e7c0d3d filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ ├── lib1.js │ └── lib2.js* ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js ├── mult.js ├── div.js* └── sub.js $ git status # Untracked files: # # lib/lib2.js tests/div.js HEAD master git add -A Staging Area / Index git commit $ git status # Changes to be committed: # # new file: new file: lib/lib2.js tests/div.js filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ ├── lib1.js │ └── lib2.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js ├── mult.js ├── div.js └── sub.js $ git status nothing to commit, working directory clean
  28. 28. Git Comandos Básicos Staging area / index commit e7c0d3d filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ ├── lib1.js │ └── lib2.js* ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js ├── mult.js ├── div.js* └── sub.js $ git status # Untracked files: # # lib/lib2.js tests/div.js git add -A Staging Area / Index git commit $ git status # Changes to be committed: # # new file: new file: lib/lib2.js tests/div.js filetree/ ├── doc │ ├── v0.1.0.txt │ └── v1.4.0.txt ├── lib │ ├── lib1.js │ └── lib2.js ├── README.md ├── src │ ├── calc.js │ └── main.js └── tests ├── add.js ├── mult.js ├── div.js └── sub.js HEAD master $ git status nothing to commit, working directory clean
  29. 29. Git Comandos Básicos $ git reset <file> reset, diff, log, reflog # oposto de “git add” $ git diff # ver alterações que ainda não estão no index $ git log # ver log de commits até ao momento $ git reflog # ver log de todos os comandos feitos
  30. 30. Git Comandos Básicos branch, checkout, merge $ git branch <branch_name> # cria um branch # “git branch” para ver lista de branchs existentes $ git checkout <branch> # muda working tree para o branch especificado $ git merge <branch> # merge do branch actual com o branch especificado
  31. 31. Git Comandos Básicos gui, gtk Eye candy... $ git gui $ gitk # commit log # operações de stage e snaphot Windows: SourceTree, TortoiseGit, git-cola, GitEye
  32. 32. Git Comandos Básicos $ git clone <repo_url> clone, push, pull # copia repo para uma pasta $ git push [remote] [branch] # envia commits locais para remote repo $ git pull [repo] # vai buscar commits do remote repo e faz merge Hosting de repos: Github, BitBucket, Assembla, Google Code, SourceForge
  33. 33. Git Comandos Básicos $ git help help! # help! lista de comandos mais usados $ git help <command> # ex: git help commit # todas as opções de um comando
  34. 34. Git Ref tutoriais, cheat sheets Tutoriais ➔ ➔ ➔ ➔ stackoverflow - definite pratical guide http://gitimmersion.com http://git-scm.com/docs/gittutorial http://www.sbf5.com/~cduan/technical/git Cheat sheets ➔ ➔ ➔ ➔ ➔ http://git-scm.com/docs cheat sheet dada http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png http://ndpsoftware.com/git-cheatsheet.html http://git-scm.com/docs/everyday.html
  35. 35. Git Hands on! ➔ github.com/nuieee ➔ repo -> workshop-git ➔ copiar clone URL $ git clone git@github.com:nuieee/workshop-git.git
  36. 36. Git Hands on! Exercício: Fazer um projeto com Git Guidelines ➔ Manter commits pequenos ➔ Mensagens de commits claras ➔ Usar Branches em features ou bugfixs ➔ Tags em commits chave
  37. 37. Git Hands on! Exercício: Calculadora muito simples Requisitos ➔ Operações básicas: add, sub, mult, div ➔ Código bem documentado Opcional: ➔ Outras operações: sqrt, power, fact ➔ testes unitários

×