Controle de Versão: GIT
O que é controle de versão, e por
que você deve se importar?
1.Alguém já sobrescreveu o código de outra pessoa por acidente e
acabou perdendo as alterações?
2.Tem dificuldades em saber quais as alterações efetuadas em um
sistema, quando foram feitas e quem fez?
3.Tem dificuldade em recuperar o código de uma versão anterior que
está em produção?
4.Tem problemas em manter variações do sistema ao mesmo tempo?
O controle de versão é um sistema que registra as mudanças feitas em um
arquivo ou um conjunto de arquivos ao longo do tempo de forma que você
possa recuperar versões específicas. (Git Book)
GIT
I.Criado para auxiliar o desenvolvimento do kernel do
Linux;
II.Velocidade
III.Design simples
IV.Suporte robusto a desenvolvimento não linear
(milhares de branches paralelos)
V.Totalmente distribuído
VI.Capaz de lidar eficientemente com grandes
projetos como o kernel do Linux (velocidade e volume
de dados)
Alguns conceitos …
•Área de trabalho
–Local onde está o diretório git
–É local
•Repositório
–Onde o git trabalha as modificações
•Remoto
–Repositório git armazenado em um local
compartilhado
Fluxo de Trabalho
•Você modifica arquivos no seu diretório de
trabalho.
•Você seleciona os arquivos, adicionando
snapshots deles para sua área de
preparação.
•Você faz um commit, que leva os arquivos
como eles estão na sua área de preparação
e os armazena permanentemente no seu
diretório Git.
Uso
Instalando Git
1.Em distribuições linux baseadas debian
• apt-get install git
2.Em sistemas windows
• https://git-scm.com/download/win
Configurações inciais
1.$ git config --global user.name "Edilton"
2.$ git config --global user.email
ediltondanniken@gmail.com
Iniciando um repositório
$ git init
Adicionando arquivos para o
versionamento/monitoramento
$ git add <nome_do_arquivo> ou <.> para todos
Consolidando/Validando as alterações
feitas
$ git commit -m 'mensagem'
Clonando/Obtendo de repositório remoto
$ git clone [url]
–$ git clone git@gitlab.com:prodap/caf.git
Verificando status do seus arquivos
–$ git status
# On branch master
nothing to commit, working directory clean
Monitorando Novos Arquivos
$ touch novo_arquivo.txt
$ git add novo_arquivo.txt
Ignorando arquivos
–$ touch .gitignore
# um comentário - isto é ignorado
# sem arquivos terminados em .txt
*.txt
# o arquivo config_banco.php será ignorado
config_banco.php
Verificando mudanças nos aquivos
–$ git diff #lista as mudanças de todos arquivos
rastreados.
–$git diff <arquivo> #lista as mudanças do
arquivo selecionado
Removendo um arquivo
–$ git rm <meu_aquivo>
Movendo um arquivo
–$ git mv arquivo_origem arquivo_destino
Visualizar histórico de commits
–$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Edilton <ediltondanniken@gmail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
Atualizando arquivo de configuração de banco de dados
;)
DESFAZENDO AS COISAS
–Modificando o ultimo commit
• $ git commit –amend
–Desfazendo um arquivo modificado
•$ git checkout meu_arquivo.php
–Removendo arquivo da área de validação
•$ git reset HEAD meu_arquivo.php
Trabalhando com remotos
–Criando novo repositório apartir de um remoto
•$ git clone git@gitlab.com:prodap/caf.git
–Enviando alterações para seu remoto
•$ git push origin master
–Recebendo alterações de seu remoto
•$ git pull origin master
Branch
1.Básico de Branch e Merge
2.Vamos ver um exemplo simples de uso de branch e merge com um fluxo de
trabalho que você pode usar no mundo real. Você seguirá esses passos:
1.Trabalhar em um web site.
2.Criar um branch para uma nova história em que está trabalhando.
3.Trabalhar nesse branch.
4.Nesse etapa, você receberá um telefonema informando que outro problema
crítico existe e precisa de correção. Você fará o seguinte:
1.Voltar ao seu branch de produção.
1.Criar um branch para adicionar a correção.
2.Depois de testado, fazer o merge do branch da correção, e enviar para
produção.
3.Retornar à sua história anterior e continuar trabalhando.
Branch Básico
•Criando um novo branch
–$ git branch criar_nova_tela
•Mudando para meu novo branch
–$ git checkout criar_nova_tela
O que aconteceu?
•Merge básico
A tarefa criar_nova_tela está pronta hora de
atualizar o master
$ git checkout master
$ git merge criar_nova_tela
Tagging
•Assim como a maioria dos VCS's, Git tem a
habilidade de criar tags em pontos
específicos na história do código como
pontos importantes
Comandos
•$ git tag
–Lista as tags de um projeto
•$ git tag -a v1.4 -m 'my version 1.4'
–Cria tags anotadas
• git show v1.4
–Mosta delatlhes de uma tag
• git push origin [nome-tag]
–Envia tags para o repositório remoto
Git - Hooks
•Como muitos outros sistemas de controle
de versão, Git tem uma maneira para
disparar scripts personalizados quando
certas ações importantes ocorrerem.
•.git/hooks.
• pre-commit
• git commit --no-verify
•prepare-commit-msg
•SAIBA MAIS EM
lhttps://git-scm.com/book/pt-br/v1/
lhttp://dev.rbtech.info/curso-controle-
versao-git-aula-1/
lhttps://help.github.com/articles/set-up-git/

Git

  • 1.
  • 2.
    O que écontrole de versão, e por que você deve se importar? 1.Alguém já sobrescreveu o código de outra pessoa por acidente e acabou perdendo as alterações? 2.Tem dificuldades em saber quais as alterações efetuadas em um sistema, quando foram feitas e quem fez? 3.Tem dificuldade em recuperar o código de uma versão anterior que está em produção? 4.Tem problemas em manter variações do sistema ao mesmo tempo? O controle de versão é um sistema que registra as mudanças feitas em um arquivo ou um conjunto de arquivos ao longo do tempo de forma que você possa recuperar versões específicas. (Git Book)
  • 3.
    GIT I.Criado para auxiliaro desenvolvimento do kernel do Linux; II.Velocidade III.Design simples IV.Suporte robusto a desenvolvimento não linear (milhares de branches paralelos) V.Totalmente distribuído VI.Capaz de lidar eficientemente com grandes projetos como o kernel do Linux (velocidade e volume de dados)
  • 4.
    Alguns conceitos … •Áreade trabalho –Local onde está o diretório git –É local •Repositório –Onde o git trabalha as modificações •Remoto –Repositório git armazenado em um local compartilhado
  • 5.
    Fluxo de Trabalho •Vocêmodifica arquivos no seu diretório de trabalho. •Você seleciona os arquivos, adicionando snapshots deles para sua área de preparação. •Você faz um commit, que leva os arquivos como eles estão na sua área de preparação e os armazena permanentemente no seu diretório Git.
  • 7.
    Uso Instalando Git 1.Em distribuiçõeslinux baseadas debian • apt-get install git 2.Em sistemas windows • https://git-scm.com/download/win Configurações inciais 1.$ git config --global user.name "Edilton" 2.$ git config --global user.email ediltondanniken@gmail.com
  • 8.
    Iniciando um repositório $git init Adicionando arquivos para o versionamento/monitoramento $ git add <nome_do_arquivo> ou <.> para todos Consolidando/Validando as alterações feitas $ git commit -m 'mensagem' Clonando/Obtendo de repositório remoto $ git clone [url] –$ git clone git@gitlab.com:prodap/caf.git
  • 9.
    Verificando status doseus arquivos –$ git status # On branch master nothing to commit, working directory clean Monitorando Novos Arquivos $ touch novo_arquivo.txt $ git add novo_arquivo.txt
  • 10.
    Ignorando arquivos –$ touch.gitignore # um comentário - isto é ignorado # sem arquivos terminados em .txt *.txt # o arquivo config_banco.php será ignorado config_banco.php
  • 11.
    Verificando mudanças nosaquivos –$ git diff #lista as mudanças de todos arquivos rastreados. –$git diff <arquivo> #lista as mudanças do arquivo selecionado Removendo um arquivo –$ git rm <meu_aquivo> Movendo um arquivo –$ git mv arquivo_origem arquivo_destino
  • 12.
    Visualizar histórico decommits –$ git log commit ca82a6dff817ec66f44342007202690a93763949 Author: Edilton <ediltondanniken@gmail.com> Date: Mon Mar 17 21:52:11 2008 -0700 Atualizando arquivo de configuração de banco de dados ;)
  • 13.
    DESFAZENDO AS COISAS –Modificandoo ultimo commit • $ git commit –amend –Desfazendo um arquivo modificado •$ git checkout meu_arquivo.php –Removendo arquivo da área de validação •$ git reset HEAD meu_arquivo.php
  • 14.
    Trabalhando com remotos –Criandonovo repositório apartir de um remoto •$ git clone git@gitlab.com:prodap/caf.git –Enviando alterações para seu remoto •$ git push origin master –Recebendo alterações de seu remoto •$ git pull origin master
  • 15.
    Branch 1.Básico de Branche Merge 2.Vamos ver um exemplo simples de uso de branch e merge com um fluxo de trabalho que você pode usar no mundo real. Você seguirá esses passos: 1.Trabalhar em um web site. 2.Criar um branch para uma nova história em que está trabalhando. 3.Trabalhar nesse branch. 4.Nesse etapa, você receberá um telefonema informando que outro problema crítico existe e precisa de correção. Você fará o seguinte: 1.Voltar ao seu branch de produção. 1.Criar um branch para adicionar a correção. 2.Depois de testado, fazer o merge do branch da correção, e enviar para produção. 3.Retornar à sua história anterior e continuar trabalhando.
  • 16.
  • 17.
    •Criando um novobranch –$ git branch criar_nova_tela •Mudando para meu novo branch –$ git checkout criar_nova_tela O que aconteceu?
  • 18.
    •Merge básico A tarefacriar_nova_tela está pronta hora de atualizar o master $ git checkout master $ git merge criar_nova_tela
  • 19.
    Tagging •Assim como amaioria dos VCS's, Git tem a habilidade de criar tags em pontos específicos na história do código como pontos importantes
  • 20.
    Comandos •$ git tag –Listaas tags de um projeto •$ git tag -a v1.4 -m 'my version 1.4' –Cria tags anotadas • git show v1.4 –Mosta delatlhes de uma tag • git push origin [nome-tag] –Envia tags para o repositório remoto
  • 21.
    Git - Hooks •Comomuitos outros sistemas de controle de versão, Git tem uma maneira para disparar scripts personalizados quando certas ações importantes ocorrerem.
  • 22.
    •.git/hooks. • pre-commit • gitcommit --no-verify •prepare-commit-msg
  • 23.