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
98
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
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
7
1.5k
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
500
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
150
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
1k
Reduxモダナイズ 〜コードのモダン化を通して、将来のライブラリ移行に備える〜
pvcresin
2
680
CI_CD「健康診断」のススメ。現場でのボトルネック特定から、健康診断を通じた組織的な改善手法
teamlab
PRO
0
170
CSC305 Lecture 03
javiergs
PRO
0
230
2分台で1500examples完走!爆速CIを支える環境構築術 - Kaigi on Rails 2025
falcon8823
3
2.9k
WebエンジニアがSwiftをブラウザで動かすプレイグラウンドを作ってみた
ohmori_yusuke
0
170
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
2
440
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
330
Introducing ReActionView: A new ActionView-Compatible ERB Engine @ Kaigi on Rails 2025, Tokyo, Japan
marcoroth
3
900
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
75
5k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Mobile First: as difficult as doing things right
swwweet
224
10k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Building Adaptive Systems
keathley
43
2.8k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
How GitHub (no longer) Works
holman
315
140k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Building Applications with DynamoDB
mza
96
6.6k
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/