Git e GitHub
Equipe
Piloto: Ricardo Kovalski CruzCopiloto: Alisson Vieira
● O que é o Git?VCS descentralizado.
● Qual a finalidade?Ter maior controle sobre as versões de um sistema.
● Quem pode utilizá-lo?Qualquer pessoa, desde empresas que queiram ter um controle sobre as versões de arquivos de seus projetos até pessoas que encontrem alguma utilidade no git.
● Qual o conceito de armazenamento de arquivos?Snapshots.
Breve Histórico● 1991 - 2002: Período em que o kernel do Linux sofreu manutenções;● 2002: O projeto do kernel do Linux começou a utilizar um sistema
DVCS propriétario, o BitKeeper;● 2005: O relacionamento entre a comunidade do Linux e a empresa do
Bitkeeper se desfez;
● Foi então que a comunidade de desenvolvedores (em particular Linus Tovards) resolveram desenvolver a sua própria ferramenta, baseando-se nas lições aprendidas quando utilizaram o BitKeeper;
Alguns objetivos● Velocidade;● Design simples;● Suporte robusto quanto a desenvolvimento não
linear;● Totalmente distribuído;● Capaz de lidar eficientemente com grandes
projetos, exemplo: Kernel;
Faça o Downloadhttps://git-scm.com/downloads
Configurando o seu Git● git config --global user.name “seu nome”● git config --global user.email “seu email”● git config --global color.ui true
Primeiros Passos● mkdir “novoDiretorio” - Cria um novo diretório;● git init - Inicializa o novo diretório;● touch “novoArquivo” - Cria um novo arquivo;● ls -la - Lista detalhadamente os arquivos;● vim “nomeArquivo” - Abre o arquivo no editor padrão do Linux;● Tecle Insert para entrar no modo de digitação e Esc para entrar no
modo de leitura;● ZZ ou :wq - Salva o arquivo e sai do editor;● git status - Exibe o status atual do arquivo, ou seja, untracked files;
Os 3 estágios● Untracked Files - Arquivo não faz parte do controle
de versão;● Changes to be commited - Foi adicionado mas
ainda não foi commitado;● Nothing to commit - Gera um hash;
Untracked Files
● git add “nomeArquivo” - Adiciona o arquivo ao controle de versão;
● git add . - Adiciona todos os arquivos que ainda não fazem parte do controle de versão;
Changes to be commited● git commit -m “mensagem” - Commita os arquivos;● git commit “nomeArquivo” - Commita o arquivo
especifico;● git reset HEAD “nomeArquivo” - Retorna ao
primeiro estágio;● git commit -a -m “mensagem” - Adiciona e
commita o(s) arquivo(s) “modificados”;
Voltando Commits● git checkout ‘hash’ - Volta o arquivo p/ versão especifica;● git reset HEAD~1 - Volta x commits de acordo com o nº informado
após o ~;● git reser HEAD~1 --soft - Desfaz o ultimo commit mas deixa o
arquivo pronto p/ ser commitado novamente;● git reset HEAD~1 --hard - Desfaz o ultimo commit
permanentemente;● git checkout -- “nomeArquivo” - Todas as alterações realizadas serão
perdidas e o arquivo voltará exatamente como estava antes, desde que o mesmo não tenha sido commitado;
.gitignore● Arquivo que terá caminhos de arquivos indesejados.● Estes arquivos não aparecerão no seu controle de
versão e também não estarão mais aparecendo com o status de untrackfiles.
Exibindo logs● git log - Exibe os logs;● git log -p - Exibe uma comparação entre as alterações em cada
arquivo;● git log --stat - Exibe as estatísticas de todos os logs;● git log --pretty=oneline - Exibe em uma linha os logs - (resumo);● git log --pretty-format:“%h - %an, %ar : %s” - Exibe o inicio do
hash, autor do commit, a quanto tempo o commit foi realizado e a descrição do commit;
● git log --since=2.days - Exibe os commits dos dois últimos dias;
Branch● git branch - Exibe a lista de branchs e informa o
atual;● git branch -a - Exibe branchs locais e remotos;● git checkout -b “nomeBranch” - Cria um novo
branch;● git checkout “nomeBranch” - Acessa o branch
informado;● git branch -D “nomeBranch” - Remove o branch;
Merge ou Rebase● git merge “nomeBranch” - Traz as mudanças do branch informado ao
branch principal (master);● git rebase “nomeBranch” - Organiza linearmente os commits na
ordem que eles foram realizados, mas fazendo tudo isso em um mesmo branch;
Resumindo, o merge não reordena os commits e ainda muitas vezes gera um commit adicional p/ ser concluído, por outro lado, o rebase reordena os commits, não gerando assim um commit adicional;
Gerando as chaves e configurando o repositório remoto
● ssh-keygen - Gerador de chaves: id_rsa é private e id_rsa.pub é public;
● git remote add origin [email protected]:<seuUser>/<seuReporitory>.git
● git remote remove origin - Remove o origin existente
Push e Pull● git push origin master - Empurra os arquivos do branch master para o
servidor origin;
OBS.: Quando clonamos um repositório, estamos clonando apenas o branch master. Para clonar os demais branchs devemos criar localmente os mesmos e colocar o caminho a partir do qual queremos copiar.
Ex.: git checkout -b “funcionalidade2” origin/funcionalidade2
● git pull - Verifica se todos os arquivos estão sincronizados;
● git pull origin master - Pucha as alterações feitas que estão no repositório remoto p/ o PC;
Tags● git tag v0.1.0 - Cria uma nova tag;● git tag -l - Lista todas as tags existentes no sistema;● git push origin master --tags - Sobe todas as tags existentes do
sistema;● git push origin mastes v0.1.0 - Sobe a tag específica;● git tag -d v0.1.0 - Remove o tag local;● git push origin :refs/tags/v0.1.0 - Remove a tag do repositório
remoto;
Referencias● http://rogerdudler.github.io/git-guide/index.pt_BR.html● https://git-scm.com/documentation