Tutorial Pratico Sobre Git
-
Upload
angelo-silva -
Category
Documents
-
view
217 -
download
0
Transcript of Tutorial Pratico Sobre Git
-
8/2/2019 Tutorial Pratico Sobre Git
1/11
TUTORIAL PRTICO SOBRE Git
por Djalma Oliveira
Verso 1.1
"Git um sistema de controle de reviso distribuida, rpido e escalvel" (traduo rpida domanual). Basicamente um sistema de controle de versionamento de arquivos, muito usado por
desenvolvedores para gerenciar verses do software produzidos seja por um desenvolvedor comotambm por outros participantes do projeto.
Com ele podemos integrar novas funcionalidades efetuadas por outros desenvolvedores,
completa, parcial ou no, e tudo isso sendo registrado em um histrico que permite "voltar no
tempo" para descobrir por exemplo como funcionava uma determinada verso daquele projeto.
Os participantes do projeto podem enviar suas verses, correes, patchs para o projeto principal
sem que o projeto principal seja comprometido, permitindo ao dono do projeto a escolha, teste eincluso dessas alteraes no projeto principal se desejar.
O Git foi desenvolvido inicialmente por Linus Torvalds mediante uma necessidade de ter um
software robusto para controle de verso do kernel linux.
Outras informaes sobre o assunto pode ser acessado atravs desses links:
Projeto : http://git.or.cz/Vdeo do Linus falando sobre o Git: http://www.youtube.com/watch?v=4XpnKHJAok8
Manual do usurio: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
Aqui iniciaremos um rpido e prtico tutorial sobre o Git, nada muito profundo, mas bastante tilpara aqueles que queiram entender um pouco sobre Git.
TERMOS ANTES DE COMEAR
Repositrio: Local onde fica armazenado os arquivos do projeto, verses e histricos, local ondeos desenvolvedores podem submeter as alteraes para o projeto.
Commit: Conjunto de alteraes realizadas durante o desenvolvimento, normalmente essasalteraes so implementaes especficas, seja uma correo, nova verso entre outros. Veja um
commit como um ponto histrico no desenvolvimento do projeto, esses pontos podem serrecuperados quando necessrio.
http://git.or.cz/http://www.kernel.org/pub/software/scm/git/docs/user-manual.htmlhttp://www.kernel.org/pub/software/scm/git/docs/user-manual.htmlhttp://git.or.cz/ -
8/2/2019 Tutorial Pratico Sobre Git
2/11
INICIANDO UM REPOSITRIO LOCAL
Criaremos uma pasta para nosso repositrio:
mkdir meuprojeto
cd meuprojeto
Dentro da pasta iniciaremos um repositrio Git:
git init
Perceba que todos os arquivos dentro da pasta (meuprojeto) fazem parte do repositrio, ou seja oseu projeto.
Configuramos agora as informaes sobre o desenvolvedor (voc), usado para identificar odesenvolvedor em cada commit realizado:
git config user.name "Djalma Oliveira"git config user.email [email protected]
Perceba que foi criado uma pasta '.git', aonde todas as informaes e histricos dos arquivos
ficam armazenados e onde acontece a 'mgica'.
Criamos dois arquivos (vazios) para o projeto.
touch arq1.txt
touch arq2.txt
Agora informamos ao Git que todos os arquivos devem ser incluidos ao prximo commit:
git add .
Mas se desejar tambm pode adicionar somente arquivos especficos, basta informar o seucaminho:
mailto:[email protected]:[email protected] -
8/2/2019 Tutorial Pratico Sobre Git
3/11
git add arq2.txt
O Git inteligente o suficiente para detectar se houve alguma alterao nos arquivos que foramindicados para o commit(git add), assim ele no realiza commits sem que pelo menos um arquivo
tenha sido alterado, exceto o primeiro commit.
Agora realizamos o commit:
git commit -a -m "Meu primeiro commit"
* o parmetro -a informa que deve adicionar todos os arquivos alterados ao commit;
* o parmetro -m "texto" adiciona uma mensagem informativa para o commit;
Resumindo, para realizar commits seguimos 3 passos:
1. Efetuar modificaes em algum arquivo;2. Informar ao Git quais arquivos devem ser adicionados ao prximo commit (git add);3. Efetuar o commit (git commit) propriamente dito baseado nos arquivo do passo 2.
No Git todo commit, exceto o primeiro, descendente (filho) de um outro commit, ento vocpode verificar diferenas entre commits caso queira.
Aps eleger (git add) quais arquivos iro para o prximo commit, voc pode ver quais alteraes
foram realizadas desde o ltimo commit, usando:
git diff cached
Essas informaes sobre alteraes desde o ltimo commit ficam armazenadas em uma estrutura
do Git chamada de 'index', ou seja, todas as vezes que voc adicionar(git add) arquivos para oprximo commit essas diferenas ficam armazenadas nessa estrutura at o momento em que de
fato seja realizado o commit(git commit).
-
8/2/2019 Tutorial Pratico Sobre Git
4/11
Listando commits realizados:
git log
Mostrando os arquivos alterados desde o ltimo commit:
git status
Mostra as alteraes realizadas no ltimo commit:
git show
BRANCHS
Uma branch uma linha de desenvolvimento do projeto. Voc pode ter vrios branchs em seu
repositrio, cada branch representando uma verso especfica de seu projeto, por exemplo. Vejaum branch como um fork ('cpia') do projeto que pode seguir sua prpria linha de
desenvolvimento.
Todo novo repositrio Git (aps o primeiro commit) possue um branch chamado por padromaster. Por exemplo podemos reprensentar nossos branchs da seguinte forma:
master => projeto principal e a ltima verso em produo.
working => branch no qual voc est trabalhando atualmente;
versao-1.0 => uma das vrias verses disponveis de seu projeto.
versao-1.1 => outra verso...
teste => alguma verso para testes
MANIPULAO DE BRANCHS LOCAIS
-
8/2/2019 Tutorial Pratico Sobre Git
5/11
Listando os branchs locais:
git branch
* masterteste
working
Perceba que o branch que possui um '*' na frente representa o branch corrente.
Criamos um novo branch 'working' baseado no branch corrente, mantendo-se no branch
atual(master):
git branch working
Criando um novo branch 'teste' baseado em um outro branch 'working' que no o corrente,
ainda mantendo-se no branch atual:
git branch teste working
Outra forma de criar um branch e ao mesmo tempo tornar o novo como corrente usando:
git checkout -b teste working
At este ponto devemos ter as seguintes branchs:
* masterteste
working
Mudando para o branch working:
-
8/2/2019 Tutorial Pratico Sobre Git
6/11
git checkout working
Agora ficar assim:
masterteste
*working
Apagando um branch:
git branch -D teste
Lembrete: voc no pode apagar o branch corrente, alterne para um outro ento execute
novamente o comando.
MAIS SOBRE OS BRANCHS
At aqui voc j deve ter percebido que no foi necessrio sair da pasta do projeto, na realidade a
cada mudana de branch (git checkout) os arquivos contidos na pasta do projeto so modificadospara refletir exatamente as verses de cada branch, sendo assim o seu projeto sempre vai estar
localizado naquela pasta, pois o Git se encarrega de gerenciar as informaes relativos a cadabranch corrente.
INCORPORANDO (merge) NOVAS MODIFICAES AO PROJETO
Uma das funcionalidades mais interessantes do Git a capacidade de incorporar as alteraesrealizada por programadores ao projeto. Essa 'juno' se d somente entre branchs e chamada
de merge. Por exemplo, digamos que o arquivo arq2.txt no branch working foi alterado:
git checkout working # mudando para o branch working
echo "opa" > arq2.txt # alterao propriamente dita
git add . # marca os arquivos para o prximo commit
git commit -a -m "alterando arq2.txt" # commit
-
8/2/2019 Tutorial Pratico Sobre Git
7/11
Agora a idia adicionar as alteraes realizadas no branch working para o branch master(lembre-se que o branch working um fork do master!?).
Mudamos para o branch que receber as alteraes:
git checkout master
Realizamos agora o merge das alteraes do branch working para o corrente (master):
git merge working
Aps o comando acima ser mostrado um resumo do que foi realizado:
Updating 751bee8..625fa43
Fast forward
arq2.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
Confirmando a alterao no arquivo:
cat arq2.txt
Peceba que neste momento toda e qualquer alterao realizada no ltimo commit do branchworking agora est refletida do branch master, inclusive o commit realizado na branch working,
que agora est na branch master.
Verifique o ltimo commit:
-
8/2/2019 Tutorial Pratico Sobre Git
8/11
git log
COMPLICANDO MAIS
Perceba que antes de efetuarmos o merge, somente a branch working possuia alteraes, a masterno, mas e se a branch master fosse alterada antes de dar-mos um merge a branch working?
Essa situao bastante comum em projetos grandes que alteraes so adicinadasfrequentemente ao projeto principal, no refletindo mais a verso atual do working.
Lembrando que todo branch possui um branch pai que a sua base a partir de ento.
Nessa situao a melhor forma de realizar o merge seria realizar um 'rebase', ou seja, pegar o
ultimo commit do master, que a base do working (por isso o nome rebase), trazer para oworking e aplicar todos os seus commits(na mesma ordem de criao) nele, agora sim a sua
verso do working estar sincronizada com a ltima verso do master mais os seus commits.
Realizar um merge nessa situao pode at funcionar(o Git inteligente em algumas situaes),
mas no recomendado pois isso poderia causar conflitos que seriam mais trabalhosos deresolver do que se efetuasse um 'rebase'.
Ento antes de aplicar-mos um merge ao master, faremos um rebase a branch working antes para
refletir a ltima verso do master:
git checkout working
git rebase master
Agora podemos aplicar um merge ao master:
git checkout master
git merge working
-
8/2/2019 Tutorial Pratico Sobre Git
9/11
REPOSITRIOS REMOTOS
A idia a mesma de um repositrio local, mas os remotos so hospedados em servidores na
internet ou outra mquina que no a sua (mas pode ser a sua tambm).Para trabalharmos com repositrios remotos usamos alguns comandos extras alm dos j
estudados.
Para criar um clone (cpia de todo o projeto, incluindo todos commits) do projeto podemos usarum dos seguintes comandos (dependendo a configurao do servidor):
git clone git://sitehospedado.com.br/projeto
ou
git clone http://sitehospedado.com.br/projeto
Logo aps, voc ver que ser criado um diretrio com o nome do projeto, e dentro a cpia(clone) de todo o projeto.
Veja o repositrio remotos disponvel agora:
cd projetogit branch r
origin/HEAD
origin/masterorigin/working
Perceba que a palavra origin o nome padro (mas voc pode criar um com nome diferentedesse se quiser) para repositrios remotos, representando os branchs que existem no projeto, mas
que so de origem remotas para voc agora.
Veja que voc deve criar um branch local baseado em algum branch remoto antes de comear aefetuar suas alteraes.
http://sitehospedado.com.br/projetohttp://sitehospedado.com.br/projeto -
8/2/2019 Tutorial Pratico Sobre Git
10/11
git checkout b working origin/working
Agora digamos que voc efetuou vrias alteraes neste repositrio e durante esse tempo oprojeto principal tambm foi alterado no correspondendo mais a base que voc possui agora e
ento deseja sincronizar com a ltima verso disponvel do projeto.
Primeiramente recuperamos a verso recente do projeto:
git fetch
Agora efetua o merge com o branch atual:
git merge origin/master
Uma outra forma de realizar poderia ser assim:
git pull origin master
Ou at mesmo:
git pull
Neste ltimo caso considerando que voc tem um branch master ele far o merge
automaticamente.
SINCRONIZANDO SUAS ALTERAES COM O REPOSITRIO REMOTO
Aps efetuar suas modificaes no branch, voc pode envi-lo para o servidor remoto atravs
deste simples comando:
-
8/2/2019 Tutorial Pratico Sobre Git
11/11
git push
INFORMAES FINAIS
Bom, finalizo por aqui mas existem ainda muitos comandos sobre o Git que podem ser
abordados em verses futuras deste manual, ento aguardem atualizaes.
Espero ter abordado de forma clara, algumas caractersticas do Git e comentem se encontraremalgum erro, pois algumas partes foram traduzidos(minha verso) do manual do usurio.