Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Workshop Git - Semcomp 2013
Search
Erich Kist
October 10, 2013
Programming
0
96
Workshop Git - Semcomp 2013
Workshop de Git durante a Semana da Computação na USP São Carlos.
Erich Kist
October 10, 2013
Tweet
Share
More Decks by Erich Kist
See All by Erich Kist
Debugging techniques in Elixir - ElixirConf 2016
erichkist
21
2.3k
Other Decks in Programming
See All in Programming
REST API設計の実践 – ベストプラクティスとその落とし穴
kentaroutakeda
2
360
Prism.parseで 300本以上あるエンドポイントに 接続できる権限の一覧表を作ってみた
hatsu38
1
110
人には人それぞれのサービス層がある
shimabox
3
650
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
730
無関心の谷
kanayannet
0
140
Rails産でないDBを Railsに引っ越すHACK - Omotesando.rb #110
lnit
1
160
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
1.2k
事業戦略を理解してソフトウェアを設計する
masuda220
PRO
21
5.8k
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
0
280
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
330
try-catchを使わないエラーハンドリング!? PHPでResult型の考え方を取り入れてみよう
kajitack
3
470
Perlで痩せる
yuukis
1
680
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.8k
Unsuck your backbone
ammeep
671
58k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
470
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
Designing for humans not robots
tammielis
253
25k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
A Modern Web Designer's Workflow
chriscoyier
693
190k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Agile that works and the tools we love
rasmusluckow
329
21k
Transcript
your best friend Workshop de Git
© Plataformatec 2013 @andrielfn e @erichkist
None
© Plataformatec 2013
© Plataformatec 2013 plataformatec/devise
© Plataformatec 2013 plataformatec/simple_form
© Plataformatec 2013 elixir-lang/elixir
© Plataformatec 2013
© Plataformatec 2013 http://guidelines.plataformatec.com.br
© Plataformatec 2013 We <3 Git
Conhece o Git? Já usou controle de versão?
http://www.flickr.com/photos/slworking/4516918054
http://www.flickr.com/photos/slworking/4516918054 Trabalho de conclusão do Semestre
http://www.flickr.com/photos/slworking/4516918054 Tudo funcionando! \o/
http://www.flickr.com/photos/slworking/4516918054 Acho que consigo melhorar este algoritmo!
http://www.flickr.com/photos/slworking/4516918054 Challenge accepted!
http://www.flickr.com/photos/slworking/4516918054 3 horas depois...
http://www.flickr.com/photos/slworking/4516918054 É, acho que não funcionou.
http://www.flickr.com/photos/slworking/4516918054 Ctrl + Z
http://www.flickr.com/photos/slworking/4516918054 Nada funcionando...
http://www.flickr.com/photos/slworking/4516918054 Ctrl + Z
http://www.flickr.com/photos/slworking/4516918054 Ctrl + Z, ..., Ctrl + Z
http://www.flickr.com/photos/slworking/4516918054 Nada funcionando.
http://www.flickr.com/photos/mrtea/528580604 Chega o dia da entrega e...
http://www.showmyhomeworkblog.com/ten-reasons-students-dont-homework/
http://www.flickr.com/photos/slworking/4516918054 Eu sou um cara precavido!
© Plataformatec 2013
http://www.flickr.com/photos/slworking/4516918054 Quem já passou por isso? Ou sabe de alguém?
© Plataformatec 2013 Este problema é facilmente resolvido usando-se Controle
de Versão.
© Plataformatec 2013 O que iremos ver hoje História Primeiros
passos Estrutura e Workflow Repositório Remoto
Controle de versão
© Plataformatec 2013 "é um software com a finalidade de
gerenciar diferentes versões no desenvolvimento de um documento qualquer" (Wikipedia) http://pt.wikipedia.org/wiki/Sistema_de_controle_de_vers%C3%A3o
História do Git
© Plataformatec 2013 Linux Kernel
© Plataformatec 2013 Início 3 de Abril de 2005 http://marc.info/?l=git&m=117254154130732
© Plataformatec 2013 Anúncio 6 de Abril de 2005 http://marc.info/?l=linux-kernel&m=111280216717070
© Plataformatec 2013 7 de Abril de 2005 http://marc.info/?l=git&m=117254154130732
© Plataformatec 2013 Kernel no GIT https://github.com/torvalds/linux/commit/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
© Plataformatec 2013 Kernel no GIT https://github.com/torvalds/linux/commit/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 3.2G, +17K arquivos!!!
Primeiros passos
© Plataformatec 2013 Vamos criar um livro!
© Plataformatec 2013 Criar diretório, trackear o diretório com o
Git e criar arquivos
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Dizendo ao Git para trackear o arquivo
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Vamos editar o nosso Capítulo 1
© Plataformatec 2013 OK Git! Como está o status disso?
© Plataformatec 2013
© Plataformatec 2013 Mais detalhes!! O que eu alterei?
© Plataformatec 2013
© Plataformatec 2013 Vamos adicionar nossas mudanças no Git
© Plataformatec 2013
© Plataformatec 2013 Está bom! Vamos fazer o primeiro commit.
© Plataformatec 2013
© Plataformatec 2013 Config? User? E-mail?
Configurações
© Plataformatec 2013 System Global Local
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 https://gist.github.com/erichkist/ 6912324
Estrutura de um commit
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Snapshot, commit, SHA1, tree, blob..
© Plataformatec 2013 Existe muito mais para se entender do
Git. Dever de casa!
Mais alguns comandos
© Plataformatec 2013 Vamos fazer mais algumas alterações em nosso
Capítulo 1 e criar o arquivo de Índice.
© Plataformatec 2013
© Plataformatec 2013 Adicionar cada arquivo novamente, OK!
© Plataformatec 2013 E se eu tiver +17K de arquivos
para commitar?
© Plataformatec 2013
© Plataformatec 2013 E se eu não quiser trackear um
dos arquivos?
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Deixa eu ver o que eu tenho
de alteração!
© Plataformatec 2013
© Plataformatec 2013 Cada as minhas alterações?
© Plataformatec 2013
© Plataformatec 2013 OK, vamos commitar todos os arquivos
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Revisando...
© Plataformatec 2013 Revisando... git init
© Plataformatec 2013 Revisando... git init git add <file>
© Plataformatec 2013 Revisando... git init git add <file> git
add <dir>
© Plataformatec 2013 Revisando... git init git add <file> git
status git add <dir>
© Plataformatec 2013 Revisando... git init git add <file> git
add <dir> git commit -m ‘mensagem’ git status
© Plataformatec 2013 Revisando...
© Plataformatec 2013 Revisando... git log
© Plataformatec 2013 Revisando... git log git show
© Plataformatec 2013 Revisando... git log git show git diff
(--cached)
© Plataformatec 2013 Revisando... git log git reset HEAD <file>
git show git diff (--cached)
© Plataformatec 2013 Revisando... git log git reset HEAD <file>
git show git diff (--cached)
git log
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
gitignore
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
Estados do Git
© Plataformatec 2013
© Plataformatec 2013 Untracked Unmodified Modified Stage criar CAPITULO_1.TXT
© Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1
© Plataformatec 2013 CAPITULO_1 Untracked Unmodified Modified Stage $ git
add CAPITULO_1.TXT
© Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1
© Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1 $ git
commit -m “mensagem”
© Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1
© Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1 criar INDICE.txt
© Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1
© Plataformatec 2013 INDICE Untracked Unmodified Modified Stage CAPITULO_1 editar
CAPITULO_1.txt
© Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1 INDICE
© Plataformatec 2013 CAPITULO_1 INDICE Untracked Unmodified Modified Stage $
git add CAPITULO_1.txt
© Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1
© Plataformatec 2013 INDICE Untracked Unmodified Modified Stage CAPITULO_1 editar
CAPITULO_1.txt
© Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1 CAPITULO_1
© Plataformatec 2013 INDICE Untracked Unmodified Modified Stage CAPITULO_1 CAPITULO_1
$ git add CAPITULO_1.txt
© Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1
© Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1 $
git commit -m “mensagem”
© Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1
Workflow de trabalho Branches, Rebases e Merges
© Plataformatec 2013 Branch, o que é? https://twitter.com/pornelski/status/316190292443267073
© Plataformatec 2013 Branches são ramificações do seu código. Como
você possui snapshots pode-se criar alterações de qualquer ponto!
© Plataformatec 2013 Como vejo a branch que estou? Como
crio? Como altero?
© Plataformatec 2013 Vamos lá!
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Vamos mudar para a branch nova
© Plataformatec 2013
© Plataformatec 2013 Criar o segundo Capítulo
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Nosso editor pediu alterações
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Alterações feitas. Vamos continuar nosso Capítulo 2
© Plataformatec 2013
© Plataformatec 2013 As alterações no Índice estarão aqui?
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 REBASE Destrutivo: Histórico pode ser modificado
© Plataformatec 2013 REBASE Feito na branch filha com a
branch pai
© Plataformatec 2013 Vamos voltar ao estado (snapshot) que tinhamos
antes
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 MERGE Não Destrutivo
© Plataformatec 2013 MERGE Cria sempre um commit de merge
© Plataformatec 2013 Vamos atualizar o nosso Índice e commitar.
© Plataformatec 2013
© Plataformatec 2013 Terminado o Capítulo 2 vamos mergear com
o master
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Vamos limpar nossas branches
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Revisando... git branch
© Plataformatec 2013 Revisando... git branch git checkout
© Plataformatec 2013 Revisando... git branch git checkout git commit
-am ‘mensagem’
© Plataformatec 2013 Revisando... git branch git checkout git commit
-am ‘mensagem’ git rebase
© Plataformatec 2013 Revisando... git branch git checkout git commit
-am ‘mensagem’ git merge git rebase
© Plataformatec 2013 Já sei commitar e trabalhar com branches.
Como compartilho meu código?
Repositório remoto
© Plataformatec 2013 file ssh http PROTOCOLOS
© Plataformatec 2013 http://www.flickr.com/photos/funkblogjob/2964231880/sizes/l/
© Plataformatec 2013 http://github.com
© Plataformatec 2013 Vamos criar as contas e configurar chave
pública!
© Plataformatec 2013 https://help.github.com/articles/generating-ssh-keys
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Vamos criar o capítulo 3 com feature
branch
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Enviando nossa branch para o repositório remoto
© Plataformatec 2013
© Plataformatec 2013
Pull Request
© Plataformatec 2013 Trabalhar em equipe
© Plataformatec 2013 Abrindo Pull Request
© Plataformatec 2013 # Modo 1
© Plataformatec 2013
© Plataformatec 2013 # Modo 2
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Comunicando as mudanças
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Vamos mergear nossso capítulo via GitHub!
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
Praticando Open Source
© Plataformatec 2013 Forkar projeto
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Clonar o projeto
© Plataformatec 2013
© Plataformatec 2013 Vamos criar o capítulo 4
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Enviando nossa branch para o repositório remoto
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Aceitando o Pull Request
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
Resolvendo conflitos
© Plataformatec 2013 Vamos criar o capítulo 5
© Plataformatec 2013
© Plataformatec 2013 Nosso editor pediu alterações, OK!
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Como ficou as nossas branches?
© Plataformatec 2013
© Plataformatec 2013 Capítulo 5 está fechado. Vamos juntar ao
master.
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Ops!! Conflito?
© Plataformatec 2013 Vamos ver o nosso status
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Fácil, não?
© Plataformatec 2013 Me diz mais coisas legais aê!
Mais coisas do GIT...
© Plataformatec 2013 $ git commit --amend
© Plataformatec 2013 $ git blame
© Plataformatec 2013 Hooks do Git
GitHub e você!
© Plataformatec 2013
© Plataformatec 2013 https://github.com/edu
© Plataformatec 2013 Existem outras opções https://codeplane.com.br/
© Plataformatec 2013 Existem outras opções https://bitbucket.org/
© Plataformatec 2013 Existem outras opções http://www.codebasehq.com/
Próximos passos
© Plataformatec 2013 Be a master! http://octodex.github.com/dojocat/
© Plataformatec 2013 http://thkoch2001.github.io/whygitisbetter/
© Plataformatec 2013 http://try.github.io
© Plataformatec 2013 http://try.github.io
© Plataformatec 2013 http://www.akitaonrails.com/2012/04/09/screencasts-liberados-gratuitamente
© Plataformatec 2013 http://pcottle.github.io/learnGitBranching/
Além do Git e GitHub
© Plataformatec 2013 GitHub não é apenas um repositório de
códigos!
© Plataformatec 2013 GitHub is the best place to share
code with friends, co-workers, classmates, and complete strangers. Over four million people use GitHub to build amazing things together.
© Plataformatec 2013 Trocar conhecimento
© Plataformatec 2013
© Plataformatec 2013 Cuidar do código
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013
© Plataformatec 2013 Comunicação
© Plataformatec 2013 https://github.com/mojombo/jekyll/pull/583
© Plataformatec 2013 Pessoas em primeiro lugar!
© Plataformatec 2013 Seja cordial!
© Plataformatec 2013 Obrigado! http://octodex.github.com/ironcat/