Aprendendo Git-Github PDF
Aprendendo Git-Github PDF
1
Aprendendo Git/GitHub
Luciana Balieiro Cosme
IFNMG Montes Claros
Agenda
Sobre Git
Instalao no Windows
Comandos bsicos
Estrutura de um commit
Branches
GitHub
Consideraes finais
Definies
Git is an extremely fast, efficient, distributed
version control system ideal for the collaborative
development of software.
GitHub is the best way to collaborate with others.
Fork, send pull requests and manage all your
public and private git repositories
(Retirado da pgina do GitHub)
Git
Utilizado para versionamento de documentos e
de softwares
Versionamento?
VCS (do ingls version control system)
SCM (do ingls source code management)
um software com a finalidade de gerenciar
diferentes verses no desenvolvimento de um
documento qualquer. (Wikipedia)
CVS, SVN, Git
A primeira semana dolorosa
Vantagem de usar controle de verso
Controle do histrico
Trabalho em equipe
Marcao e resgate de verses estveis
Ramificao de projeto
Histria
Comea com Linus Torvalds
O projeto que d origem o kernel do Linux
Eficiente
Filesystem Distribudo
Escrito em C
31/05/2012
2
Caractersticas do Git
Trabalha offline
Repositrio
Distribudo
Centralizado x Distribudo
Diagramas de um controle de verso
centralizado e de um distribudo.
Fonte: Git-SCM
Instalao
Git for Windows
https://git.wiki.kernel.org/index.php/WindowsInst
all
Path: include Unix Tools
Configuring the line ending conversion
Checkout as-is, comit as-is
Diferenas de quebra de linha entre Windows (rn)
e Linux (n)
Terminal
Usando o terminal
Suporta os comandos Linux
ls, pwd, cd, clear
Par de chaves para utilizar repositrios
remotos
ssh
Chaves
ssh-keygen t rsa
identificao
id_rsa (chave privada, mantida em sigilo)
id_rsa.pub (associar aos repositrios)
Outras pessoas podem ter acesso
cat .ssh/id_rsa.pub
RSA
Algoritmo de Criptografia (chave assimtrica,
chave pblica
31/05/2012
3
Chaves
Chave privada
O que a chave privada encripta s a chave pblica
abre
Chave pblica
O que a chave pblica encripta s a chave privada
abre
Identidade
git config --global user.name Luciana Balieiro
git config --global user.email
[email protected]
cat .gitconfig
name = Luciana Balieiro
email = [email protected]
Novo projeto
PHP
Dentro de www
ProjetoGit
index.php
Novo projeto
Cdigo sugerido
index.php
<?php
echo "Ol, mundo";
?>
Teste o funcionamento
Novo repositrio
No terminal
cd pasta do projeto
Ex: cd Desktop/Easy/www/ProjetoGit
Para iniciar o git
git init
ls -a
Cria um diretrio .git
Mensagem: Initialized empty Git...
git help init
31/05/2012
4
Status
git status
Branch master (ramificao)
Initial commit
Untracked files (arquivos que o git no
conhece)
index.php
Repositrios
Repositrio .git
Todos os arquivos do controle de verso
working directory (arquivos atuais)
Todos os arquivos do diretrio
rea de ndice (modificaes feitas antes de
enviar ao commit)
index.php
Add
git add index.php
Adiciona o arquivo ao ndice
git status
Mudanas adicionadas para o commit
git add .
Todos os arquivos
git rm
Para retirar arquivos do ndice
git rm cached index.php
git status
git add .
git status
Novo commit
git commit m Meu primeiro commit
Mensagens
git status
git log
Estrutura de um commit
Envelope
SHA1 que identifica o commit
40 caracteres
24b9da6552252987aa493b52f8696cd6d3b00373
Uma foto de todos os arquivos naquele
momento
No armazena um arquivo novamente, apenas
um link para uma verso prvia
31/05/2012
5
Estrutura de um commit
Estrutura de commit. Fonte: Git-SCM
Estados
Untracked ndice Repositrio
Add
rm --cached
Commit
Alterao
index.php
echo "<h1> Meu site </h1>";
git status
git add .
git commit m Adicionando h1 na pgina
Adicionando outros arquivos
teste.php
status, add, commit
git commit m Adicionando pgina de teste
git log
Alterando commit
Altere a pgina index.php
status, add
git commit m Adicionando pgina de teste
--amend
Altera o commit
git log
Estatsticas
git log -- stat, gitk
31/05/2012
6
.gitignore
Listar arquivos, ou diretrios que sero
ignorados
touch .gitignore (criar um arquivo vazio)
Criar um diretrio chamado executaveis
Incluir o nome do diretrio no .gitignore
git add, git commit
Acrescentar um novo arquivo dentro do diretrio
git status
O arquivo aparece?
Mais alguns comandos
git reflog
Informaes quando o repositrio atualizado
git reset HEAD~1 --hard
Apagar o commit em questo
Branch
Conveno: no use o branch master
git branch
*master (*branch ativo)
Novo branch
git checkout b desenvolvimento
Novo branch a partir do atual
git branch
*desenvolvimento(*branch ativo)
master
Navegando entre branches
git checkout master
git log
git checkout desenvolvimento
git log
Repositrios idnticos!
Trabalhando com branch
Certifique que voc est no branch correto
Faa as alteraes
index.php
echo date("d-m-y");
git status, add, commit
Atualizando o master
git checkout master
git merge desenvolvimento
gitk
31/05/2012
7
gitk Desenvolvimento
git checkout desenvolvimento
Crie uma pgina de contato
<?php
echo "<h1> Preencha nosso formulrio abaixo
</h1>";
?>
add, commit
Mas surgiu um erro para corrigir...
Navegando
Desenvolvimento e master diferentes
git log
Corrigindo...
git checkout b bugfix
Fazer a correo de um erro
index.php
Acrescentar css
echo "<h1 style='color:red; font-size:30px;'> Meu site
</h1>";
Testado a correo
git status
git add .
git commit m Correo do index
Corrigindo...
Aplique as correes no master
git checkout master
git merge bugfix
Aplique as atualizaes no desenvolvimento
git checkout desenvolvimento
git merge master
Atualize o master
git checkout master
git merge desenvolvimento
gitk
31/05/2012
8
Mais comandos
git branch d bugfix
GitHub
github.com
Social networking
Seguir uma pessoa ou projeto, compartilhar,
colaborar
Startup
Repositrios pblicos gratuitos
Repositrios privados pagos
Quem usa?
Facebook, Twitter, Microsoft, RedHat,
Linkedin, Mozilla
1.643.898 pessoas
Documentao
help.github.com
Conta
Criar uma conta e adicionar a chave no github
Add key
Localize o arquivo id_rsa.pub e copie o contedo
31/05/2012
9
Testando
ssh -T [email protected]
yes
Novo repositrio remoto
New repo
Novo repositrio Enviando os arquivos
git remote add origin
[email protected]:lucianaa/Aulagit.git
git remote (certificar que o repositrio remoto
foi criado)
git push -u origin master
Arquivos do push Contribua
Localize o projeto que voc deseja contribuir e
d um fork
31/05/2012
10
Repositrio local
git clone [email protected]:usuario/Aulagit.git
cd Aulagit
Faa alguma alterao
add, commit
git push u origin master
Fazendo um pull request
Aceitando um pull request Atualizando o repositrio local
git fetch origin
git merge origin/master
Atividade
1. Enviar uma pgina com seu nome ao
repositrio remoto Aulagit
2. Em dupla:
Criar um repositrio no Github
Cada um deve trabalhar em branch e depois
enviar ao repositrio remoto as alteraes
Referncias
Akita on Rails
http://akitaonrails.com/2008/04/02/micro-
tutorial-de-git
http://akitaonrails.com/2010/08/17/screencast-
comecando-com-git
http://pt.wikipedia.org/wiki/Sistema_de_controle
_de_vers%C3%A3o
http://help.github.com/win-set-up-git/
http://git-scm.com/documentation