SlideShare uma empresa Scribd logo
1 de 7
Comandos Básicos do
Git e Git Flow no Projeto
Requisitos:
 Ter uma conta válida no site do www.gitlab.com
 Se possível ter cadastrado as chaves SSH da máquina no seu profile do site.
 Seguir os procedimentos que estão no WIKI do projeto.
Clonando o projeto no repositóriodo https://gitlab.com/dagoba/dagoba_code
# Clonando o projeto do site
$ git clone git@gitlab.com:dagoba/dagoba_code.git
# ou se desejar baixar para outra pasta
$ git clone git@gitlab.com:dagoba/dagoba_code.git dagoba
//se não possuir a chave SSH na conta tem baixar via HTTPS
$ git clone https://gitlab.com/dagoba/dagoba_code.git
Configurar o Git:
# configurar nome e email no nível global do sistema para identificar no commit
$ git config --global user.nome "Carlos Anders"
$ git config --global user.email "carlosanders@gmail.com"
Iniciando o Git Flow no projeto:
# verficar os branches trazidos do repositório com os commits
$ git branch -a –v
# criando e alternando para o branch develop – usado como referência de desenv.
$ git checkout -b develop origin/develop
# Iniciando de fato o git flow no projeto clonado. Nessa etapa deixa com as opções default
$ git flow init
Obtendouma feature do repositórioremotopara trabalho colaborativo
Caso desejartrabalharcolaborativamentenomesmoramode umdesenvolvedorprocedadaseguinte maneira;
# no git flow: ele irá trazer do repositório remoto
$ git flow feature pull origin fluxo-trabalho
# ou se quiser usar o git.
$ git checkout -b feature/fluxo-trabalho origin/feature/fluxo-trabalho
Copiandoos arquivos de dependênciasque estãofaltando:
Para o correto funcionamentodoprojetoapósaclonagemdorepositório,é necessárioatualizaras
dependênciasnecessáriasparaoprojeto.Essasdependênciasnãosãorastreadas,poissãobibliotecasde
terceirosque oframeworkutiliza.Alémdisso xxxxxxxx
# navegar até a pasta
$ cd dagoba_code
# para baixar as dependencias necessárias do projeto
$
Criando uma feature para trabalhar em uma determinadafuncionalidade.
# no git flow
$ git-flow feature start nova-feature
# git
$ git checkout -b feature/nova-feature develop
Commitandoarquivos no repositóriolocal de seubranch de feature.
$ git commit -m 'comentário'
[master (root-commit) 1490ab0] primeiro commit
1 file changed, 1 insertion(+)
create mode 100644 README
$ git status
# On branch master
nothing to commit (working directory clean)
XXXXXXXXX
# Para commitar também os arquivos versionados mesmo não estando no Stage basta adicionar o
parâmetro -a
$ git commit -a -m 'comentário'
# corrigir uma mensagem de commit que ainda não foi enviada para um remote.
$ git commit --amend -m 'mensagem nova'
# Para juntar 2 ou mais commits em um único commit.
$ git checkout master
$ git checkout –b temp # (é uma copia do master)
# o commando abaixo, junta os commits e joga na branch temp
$ git merge desenv –squash
$ git commit –m “nova funcionalidade xpto”
$ git checkout master
$ git merge temp
$ git branch –D # para forçar a deleção
A flag-mserve para adicionarumcomentáriosobre o commitque você estáfazendo.Adicionarumcomentário
é obrigatórioparatodosos commits.Se você não usar o -m, o editorde textopadrãodo seusistema(ouaquele
configuradoinicialmente comcore.editor,veraetapade configuração) iráabrir para que você entre com uma
mensagem.
AdicionandoRepositóriosRemotosno seuRepositórioLocal:
Para informaro Git que este diretóriodevese comunicarcomo servidordo RemotoGit.
$ git remote add origin git@gitserver.anders.mb:carlosanders/siseventos.git
Ou
$ git remote add origin git@github.com:carlosanders/git-teste.git
# Para listar um repositório remoto
$ git remote -v
# Para remover um repositorio remote
$ git remote rm origin
# Para exibir nomes dos repositórios
$ git remote show
# Para exibir detalhes nome dos repositórios
$ git remote show origin
Resumo: uso típico do Git
Podemosresumiresse workflowdoGitdessaforma:
# arquivo foo.R adicionado/modificado
$ git add foo.R
$ git commit -m 'mensagem'
$ git push origin master
# arquivo bar.R adicionado/modificado
$ git add bar.R
$ git commit -m 'mensagem'
$ git push origin master
# arquivos foo.R e bar.R modificados
$ git add .
$ git commit -m 'mensagem'
$ git push origin master
Comandos Úteis do Git
Criando um chave ssh para comunicação com um repositórioRemoto:
Para criar uma chave privadano git.
$ git ssh-keygen -t rsa -C "carlosanders@gmail.com"
# Para listar a chave pública
$ cat ~/.ssh/id_rsa.pub
# ou se preferir pelo editor de texto padrão ou cacadastrado
$ notepad ~/.ssh/id_rsa.pub
Removere mover arquivos no git:
$ git rm foo.R
$ git mv foo.R
$ git rm -f {arquivo}
# Para remover arquivos do repositorio remoto, mas manter localmente
$ git rm --cached foo.R
Diferente de muitossistemasVCS,oGitnão monitoraexplicitamente arquivosmovidos.
É um pouco confusoque oGit tenhaum comandomv. Se você quiserrenomearum arquivonoGit,você pode
fazerissocom.
$ git mv arquivo_origem arquivo_destino
Para deletararquivos,mesmososque nãoestãona área de índice:
$ git clean -f
Recuperandoversõesde arquivos:
Para reverterumúnicoarquivopara uma versãoanterior (sabendoque oarquivoé foo.Re o hashSHA do
commité,por exemplo,03f9c0abe911440339ecb82e08ec8ae65ca11a7b)
$ git checkout 03f9c0a foo.R
Para reverterumunicoarquivopara uma versaoanterior(sendoque essearquivofoi DELETADOemalgum
commitanterior) se voce nãolembrao nome do arquivo,executeesse comandoque identificaosmodos
'delete'.
$ git log --diff-filter=D --summary | grep delete
Sabendo o nome do arquivo, voce pode conferir o log para identificar o commit que o deletou.
$ git log -- <arquivo-deletado>
NOTE que se o arquivoestavaemum sub-diretoriodentrodoseuprojeto,eledeveserespecificadocomo
caminhorelativoparaesse diretorio.Paratercertezadocommitque deletouoarquivo,veja
$ git rev-list -n 1 HEAD -- <arquivo-deletado>
E finalmente pararecuperaroarquivofaca o checkoutnocommitanterior(porissoo ^ ao final docommit).
$ git checkout <commit-que-deletou>^ -- <arquivo-deletado>
O arquivodeletadodeveravoltarparao diretorio(ousub-diretoriose ele estavaemum) comoum novo
arquivo.
Outros comando úteis:
# Para voltar ao último commit:
$ git reset --hard HEAD~1
# Para voltar ao último commit e mantém os últimos arquivos no Stage:
$ git reset --soft HEAD~1
# Volta para o commit com a hash XXXXXXXXXXX:
$ git reset --hard XXXXXXXXXXX
# Recuperando commit apagado pelo git reset:
$ git reflog
# E para aplicar:
$ git merge {hash}
Branchs
Um branch no Git é simplesmente umleveponteiromóvelparaumdos commits.
# Para criar uma branch:
$ git branch testing
# Para mudar para um branch existente, você executa o comando git checkout. Vamos mudar
para o novo branch testing:
$ git checkout testing
Com o gitcheckoutvocê pode mudar de branch,caso a branchainda nãoexistavocê poderápassaro parâmetro
-b para criar.
$ git checkout -b {nome_da_branch}
# Para deletar uma branch:
$ git branch -d {nome_da_branch} ou $ git branch –D {nome_da_branch}
# Para enviar a branch para o servidor remoto:
$ git push {alias} {nome_da_branch}
# Para deletar uma branch remota:
$ git push {alias} :{nome_da_branch}
$ git push origin :ubuntu16
# Para renomear uma branch local
$ git branch -m add_phpmyadmin add_mysql
Tags
Criar tags emdeterminadospontosde umprojetoé umamaneiraeficazde podervoltarfacilmente naquele
pontoe verificarasituaçãodos arquivosnaquelemomento.Nodesenvolvimentode umsoftware porexemplo,
os tags podemmarcar as versões(ex.:v0.1,v0.2,...) do códigoao longodotempo.
No git,as tags podemserleves(lightweight)ouanotadas(annotated).A diferençaé que umatag leve é só um
"ponteiro"paraum commitespecífico,enquantoque umataganotada é como se fosse umnovocommit:ela
armazenao nome de quemcrioua tag, e-mail,data,e umamensagem.
# Para criar uma tag leve faça:
$ git tag v0.1
# Para criar uma tag anotada (geralmente mais recomendado), faça :
$ git tag -a v0.1 -m 'mensagem de commit'
A mensagemde commitaqui tambémé obrigatória.Se você nãoespecificarcoma opção -m, um editoriráabrir
para você inserirumamensagem.
# Para verificar as tags existentes ou criadas:
$ git tag –l
# Para ver todos os commits especificos associados a uma tag, use:
$ git show v0.1
IMPORTANTE: se você está trabalhando com um repositório remoto (como o GitHub), é
necessário dar um push específico para que a tag também seja enviada para o servidor. As
tags criadas acima são apenas locais. Para enviar a tag para o servidor, faça um push na
tag:
$ git push origin v0.1
Merges
Suponhaque você decidiuque otrabalhona tarefa#53 está completoe pronto para serfeitoomerge no
branch master. Para fazerisso,você fará o merge doseubranch iss53, bemcomo o merge dobranch hotfix de
antes.Tudoque você tema fazeré executarocheckoutdo branchpara onde desejafazeromerge e então
rodar o comandogit merge.Quandose executaummerge é criadoum novocommitcom as alteraçõesque
estãosendomescladas.
# Para trocar de branch:
$ git checkout master
# Para fazer o merg:
$ git merge iss53
Se você querusar umaferramentagráficapara resolveressesproblemas.
$ git mergetool
# Para exibir branchs não mescladas:
$ git branch –no-merged
Rebase
Alternativamenteé possível mesclarasaltereaçõesde 2branches,simplificandoohistóricode commits.Como
rebase é informadoorepositóriofoi rebobinadoe otrabalhorefeito.
No caso abaixoo repositóriovoltou ao estado que estava ao ser criadoa branchdesenv,a partir da master.
Depoisdisso,foi aplicadoocommit que foi feitona branch desenv e finalmente foiaplicado oúltimocommit
na branch master. Dessaformaé mantidolinearizadoohistóricodoscommitsnogit.
# Para aplicar a correção da branch desenv na branch master com rebase:
$ git checkout master
$ git rebase desenv
# First, rewinding head to replay your work on top of it...
# Applying: Alterando textos do banner
Stash
Útil quandotem-se arquivoscriadose modificadosnaáreade trabalho,masainda,não desejacriarumcommit
para os mesmos,poisaindanãoterminouafuncionalidade desejada.Portanto,casonecessite criaroutra
funcionalidade oucorreçãode algumbug,semter que criar uma novabranch pode usar o stash.
1ª Forma:
# Para fazer um novo stash na sua pilha, execute:
$ git stash
# Para ver as stashes que você guardou, você pode usar:
$ git stash list
# Para aplicar/retonar o último stash para área de trabalho
$ git stash apply
# Para Limpar a área temporária/stash
$ git stash clear
2ª Forma:
# Para fazer um novo stash salvando com um nome:
$ git stash save {nome_stash}
# Para retornar um stash específico:
$ git stash apply stash{0} ou stash{1} ou stash{2}
# Para deletar um stash
$ git stash drop stash{0} ou stash{1} …
Manipulandodados de um RepositórioRemoto
Suponhaque você decidiuclonarumprojetode umrepositório remoto.
# Para clonar um projeto versionado pelo git:
$ git clone git@github.com:carlosanders/appInicialZF.git
# Para pegar dados dos seus projetos remotos, você pode executar :
$ git fetch origin
Incorporaas alteraçõesde um repositórioremotonobranchatual.Emseu modopadrão,git pull é
uma abreviaçãopara gitfetchseguidode gitmerge FETCH_HEAD. Porexemplo,se euestiveremuma
branch chamada develope quiseratualizarcasohajaatualizaçõesremotamente.
# Para Incorpora as alterações de um repositório remoto:
$ git pull origin develop
ManipulandoLogs
Suponhaque você decidiuclonarumprojetode umrepositórioremoto.
# Exibe log completo:
$ git log --stat
# Exibe log em uma linha:
$ git log --pretty=oneline
# Exibe log formantando saída:
$ git log --pretty=format:"%h - %an, %ar : %s"
# Exibe log em modo gráfico na linha de comando:
$ git log --pretty=format:"%h %s" --graph
# Exibe log de semanas atrás:
$ git log --since=2.weeks
# Exibe log em 4 linhas:
$ git log –n 4 –oneline –decorate --parents
ManipulandoDiffs
O comandogit diff nosmostraas diferençasentre oworkingdirectorye oúltimocommit.
# Exibe log completo:
$ git diff
# Para ver mudanças apenas da staging area:
$ git diff --cached
# Pra visualizar os commits em modo grafico pelo git:
$ gitk --all &
ManipulandoConfiguraçõesdo Git.
O comandogit diff nosmostraas diferençasentre oworkingdirectorye oúltimocommit..
# Setando proxy no git:
$ git config --global http.proxy http://06840680:master2016@proxy-i1.mb:6060
$ git config --global https.proxy http://06840680:master2016@proxy-i1.mb:6060
$ git config --global http.sslverify false
# Para listar configurações:
$ git config --list
# Pra listar diretiva específica do git:
$ git config --system --get https.proxy
$ git config --global --get http.proxy
$ git config --global --get https.proxy
# Para remover uma diretiva específca do git:
$ git config --global --unset http.proxy
$ git config --global --unset https.proxy
Repositório Local/Remoto
Para trabalharcom algunscomandoreferente aorepositóriolocal e remoto.
# Para clonar localmente um repositório.
$ git clone {path/repo/.git} {nome_novo_repo}
# Por convecção o repositório principal se chama origin
# Pra listar o local de onde foi executado o clone
$ git remote show origin
# Para listar branch do repositório remoto
$ git branch –a
# Para enviar uma branch específica
$ git push origin desenv
Trabalhando com SVN no GIT
Para trabalharcom algunscomandosreferente aumservidorde SVN.
# Para clonar um projeto do svn no git
$ git svn clone svn://local/do/svn/repo.svn
# Para enviar uma modificação para o svn via git
$ git svn dcommit –m “comentário”
# Para resgatar os dados do svn via git
$ git svn fecth

Mais conteúdo relacionado

Mais procurados

Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Tchelinux
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDevHélio Medeiros
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitVagner Santana
 
Git e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonGit e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonAlysson Ajackson
 
Git workshop
Git workshopGit workshop
Git workshopYuri Reis
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantesMario Ernesto
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errarBruno Calheira
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Mauro George
 
Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Jonathan Célio
 

Mais procurados (20)

Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
 
Controle de versão e colaboração com Git
Controle de versão e colaboração com GitControle de versão e colaboração com Git
Controle de versão e colaboração com Git
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Introdução ao Git
Introdução ao Git   Introdução ao Git
Introdução ao Git
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Controle de versão com e git
Controle de versão com e gitControle de versão com e git
Controle de versão com e git
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Git
GitGit
Git
 
Git e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonGit e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson Ajackson
 
Git workshop
Git workshopGit workshop
Git workshop
 
Git+github
Git+githubGit+github
Git+github
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantes
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errar
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
 
Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos
 

Semelhante a Git Flow Básico

EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareAldson Diego
 
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em pazViajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em pazFlávio Lisboa
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com gitHumberto Streb
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
GIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoGIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoDjanilson Alves
 
Git lighting talk
Git lighting talkGit lighting talk
Git lighting talkCaio Gondim
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteWaldyr Felix
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Danilo Pinotti
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.Rafael Ivan
 
MINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAMINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAArmando Couto
 

Semelhante a Git Flow Básico (20)

Git - Não perca o que estava funcionando!
Git - Não perca o que estava funcionando!Git - Não perca o que estava funcionando!
Git - Não perca o que estava funcionando!
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
Sendo um GIT master
Sendo um GIT masterSendo um GIT master
Sendo um GIT master
 
Git
GitGit
Git
 
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em pazViajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com git
 
Conhecendo o GIT
Conhecendo o GITConhecendo o GIT
Conhecendo o GIT
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
GIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoGIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento Semântico
 
Git
GitGit
Git
 
Git lighting talk
Git lighting talkGit lighting talk
Git lighting talk
 
Git
GitGit
Git
 
Git e github
Git e githubGit e github
Git e github
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficiente
 
Git
GitGit
Git
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.
 
Git na pratica
Git na praticaGit na pratica
Git na pratica
 
Oficina de Git EEDACT2015
Oficina de Git EEDACT2015Oficina de Git EEDACT2015
Oficina de Git EEDACT2015
 
MINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAMINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIA
 

Git Flow Básico

  • 1. Comandos Básicos do Git e Git Flow no Projeto Requisitos:  Ter uma conta válida no site do www.gitlab.com  Se possível ter cadastrado as chaves SSH da máquina no seu profile do site.  Seguir os procedimentos que estão no WIKI do projeto. Clonando o projeto no repositóriodo https://gitlab.com/dagoba/dagoba_code # Clonando o projeto do site $ git clone git@gitlab.com:dagoba/dagoba_code.git # ou se desejar baixar para outra pasta $ git clone git@gitlab.com:dagoba/dagoba_code.git dagoba //se não possuir a chave SSH na conta tem baixar via HTTPS $ git clone https://gitlab.com/dagoba/dagoba_code.git Configurar o Git: # configurar nome e email no nível global do sistema para identificar no commit $ git config --global user.nome "Carlos Anders" $ git config --global user.email "carlosanders@gmail.com" Iniciando o Git Flow no projeto: # verficar os branches trazidos do repositório com os commits $ git branch -a –v # criando e alternando para o branch develop – usado como referência de desenv. $ git checkout -b develop origin/develop # Iniciando de fato o git flow no projeto clonado. Nessa etapa deixa com as opções default $ git flow init Obtendouma feature do repositórioremotopara trabalho colaborativo Caso desejartrabalharcolaborativamentenomesmoramode umdesenvolvedorprocedadaseguinte maneira; # no git flow: ele irá trazer do repositório remoto $ git flow feature pull origin fluxo-trabalho # ou se quiser usar o git. $ git checkout -b feature/fluxo-trabalho origin/feature/fluxo-trabalho Copiandoos arquivos de dependênciasque estãofaltando: Para o correto funcionamentodoprojetoapósaclonagemdorepositório,é necessárioatualizaras dependênciasnecessáriasparaoprojeto.Essasdependênciasnãosãorastreadas,poissãobibliotecasde terceirosque oframeworkutiliza.Alémdisso xxxxxxxx # navegar até a pasta $ cd dagoba_code # para baixar as dependencias necessárias do projeto $
  • 2. Criando uma feature para trabalhar em uma determinadafuncionalidade. # no git flow $ git-flow feature start nova-feature # git $ git checkout -b feature/nova-feature develop Commitandoarquivos no repositóriolocal de seubranch de feature. $ git commit -m 'comentário' [master (root-commit) 1490ab0] primeiro commit 1 file changed, 1 insertion(+) create mode 100644 README $ git status # On branch master nothing to commit (working directory clean) XXXXXXXXX # Para commitar também os arquivos versionados mesmo não estando no Stage basta adicionar o parâmetro -a $ git commit -a -m 'comentário' # corrigir uma mensagem de commit que ainda não foi enviada para um remote. $ git commit --amend -m 'mensagem nova' # Para juntar 2 ou mais commits em um único commit. $ git checkout master $ git checkout –b temp # (é uma copia do master) # o commando abaixo, junta os commits e joga na branch temp $ git merge desenv –squash $ git commit –m “nova funcionalidade xpto” $ git checkout master $ git merge temp $ git branch –D # para forçar a deleção A flag-mserve para adicionarumcomentáriosobre o commitque você estáfazendo.Adicionarumcomentário é obrigatórioparatodosos commits.Se você não usar o -m, o editorde textopadrãodo seusistema(ouaquele configuradoinicialmente comcore.editor,veraetapade configuração) iráabrir para que você entre com uma mensagem. AdicionandoRepositóriosRemotosno seuRepositórioLocal: Para informaro Git que este diretóriodevese comunicarcomo servidordo RemotoGit. $ git remote add origin git@gitserver.anders.mb:carlosanders/siseventos.git Ou $ git remote add origin git@github.com:carlosanders/git-teste.git # Para listar um repositório remoto $ git remote -v # Para remover um repositorio remote $ git remote rm origin # Para exibir nomes dos repositórios $ git remote show # Para exibir detalhes nome dos repositórios $ git remote show origin Resumo: uso típico do Git
  • 3. Podemosresumiresse workflowdoGitdessaforma: # arquivo foo.R adicionado/modificado $ git add foo.R $ git commit -m 'mensagem' $ git push origin master # arquivo bar.R adicionado/modificado $ git add bar.R $ git commit -m 'mensagem' $ git push origin master # arquivos foo.R e bar.R modificados $ git add . $ git commit -m 'mensagem' $ git push origin master Comandos Úteis do Git Criando um chave ssh para comunicação com um repositórioRemoto: Para criar uma chave privadano git. $ git ssh-keygen -t rsa -C "carlosanders@gmail.com" # Para listar a chave pública $ cat ~/.ssh/id_rsa.pub # ou se preferir pelo editor de texto padrão ou cacadastrado $ notepad ~/.ssh/id_rsa.pub Removere mover arquivos no git: $ git rm foo.R $ git mv foo.R $ git rm -f {arquivo} # Para remover arquivos do repositorio remoto, mas manter localmente $ git rm --cached foo.R Diferente de muitossistemasVCS,oGitnão monitoraexplicitamente arquivosmovidos. É um pouco confusoque oGit tenhaum comandomv. Se você quiserrenomearum arquivonoGit,você pode fazerissocom. $ git mv arquivo_origem arquivo_destino Para deletararquivos,mesmososque nãoestãona área de índice: $ git clean -f Recuperandoversõesde arquivos: Para reverterumúnicoarquivopara uma versãoanterior (sabendoque oarquivoé foo.Re o hashSHA do commité,por exemplo,03f9c0abe911440339ecb82e08ec8ae65ca11a7b) $ git checkout 03f9c0a foo.R Para reverterumunicoarquivopara uma versaoanterior(sendoque essearquivofoi DELETADOemalgum commitanterior) se voce nãolembrao nome do arquivo,executeesse comandoque identificaosmodos 'delete'. $ git log --diff-filter=D --summary | grep delete Sabendo o nome do arquivo, voce pode conferir o log para identificar o commit que o deletou.
  • 4. $ git log -- <arquivo-deletado> NOTE que se o arquivoestavaemum sub-diretoriodentrodoseuprojeto,eledeveserespecificadocomo caminhorelativoparaesse diretorio.Paratercertezadocommitque deletouoarquivo,veja $ git rev-list -n 1 HEAD -- <arquivo-deletado> E finalmente pararecuperaroarquivofaca o checkoutnocommitanterior(porissoo ^ ao final docommit). $ git checkout <commit-que-deletou>^ -- <arquivo-deletado> O arquivodeletadodeveravoltarparao diretorio(ousub-diretoriose ele estavaemum) comoum novo arquivo. Outros comando úteis: # Para voltar ao último commit: $ git reset --hard HEAD~1 # Para voltar ao último commit e mantém os últimos arquivos no Stage: $ git reset --soft HEAD~1 # Volta para o commit com a hash XXXXXXXXXXX: $ git reset --hard XXXXXXXXXXX # Recuperando commit apagado pelo git reset: $ git reflog # E para aplicar: $ git merge {hash} Branchs Um branch no Git é simplesmente umleveponteiromóvelparaumdos commits. # Para criar uma branch: $ git branch testing # Para mudar para um branch existente, você executa o comando git checkout. Vamos mudar para o novo branch testing: $ git checkout testing Com o gitcheckoutvocê pode mudar de branch,caso a branchainda nãoexistavocê poderápassaro parâmetro -b para criar. $ git checkout -b {nome_da_branch} # Para deletar uma branch: $ git branch -d {nome_da_branch} ou $ git branch –D {nome_da_branch} # Para enviar a branch para o servidor remoto: $ git push {alias} {nome_da_branch} # Para deletar uma branch remota: $ git push {alias} :{nome_da_branch} $ git push origin :ubuntu16 # Para renomear uma branch local $ git branch -m add_phpmyadmin add_mysql Tags Criar tags emdeterminadospontosde umprojetoé umamaneiraeficazde podervoltarfacilmente naquele pontoe verificarasituaçãodos arquivosnaquelemomento.Nodesenvolvimentode umsoftware porexemplo, os tags podemmarcar as versões(ex.:v0.1,v0.2,...) do códigoao longodotempo. No git,as tags podemserleves(lightweight)ouanotadas(annotated).A diferençaé que umatag leve é só um "ponteiro"paraum commitespecífico,enquantoque umataganotada é como se fosse umnovocommit:ela armazenao nome de quemcrioua tag, e-mail,data,e umamensagem. # Para criar uma tag leve faça:
  • 5. $ git tag v0.1 # Para criar uma tag anotada (geralmente mais recomendado), faça : $ git tag -a v0.1 -m 'mensagem de commit' A mensagemde commitaqui tambémé obrigatória.Se você nãoespecificarcoma opção -m, um editoriráabrir para você inserirumamensagem. # Para verificar as tags existentes ou criadas: $ git tag –l # Para ver todos os commits especificos associados a uma tag, use: $ git show v0.1 IMPORTANTE: se você está trabalhando com um repositório remoto (como o GitHub), é necessário dar um push específico para que a tag também seja enviada para o servidor. As tags criadas acima são apenas locais. Para enviar a tag para o servidor, faça um push na tag: $ git push origin v0.1 Merges Suponhaque você decidiuque otrabalhona tarefa#53 está completoe pronto para serfeitoomerge no branch master. Para fazerisso,você fará o merge doseubranch iss53, bemcomo o merge dobranch hotfix de antes.Tudoque você tema fazeré executarocheckoutdo branchpara onde desejafazeromerge e então rodar o comandogit merge.Quandose executaummerge é criadoum novocommitcom as alteraçõesque estãosendomescladas. # Para trocar de branch: $ git checkout master # Para fazer o merg: $ git merge iss53 Se você querusar umaferramentagráficapara resolveressesproblemas. $ git mergetool # Para exibir branchs não mescladas: $ git branch –no-merged Rebase Alternativamenteé possível mesclarasaltereaçõesde 2branches,simplificandoohistóricode commits.Como rebase é informadoorepositóriofoi rebobinadoe otrabalhorefeito. No caso abaixoo repositóriovoltou ao estado que estava ao ser criadoa branchdesenv,a partir da master. Depoisdisso,foi aplicadoocommit que foi feitona branch desenv e finalmente foiaplicado oúltimocommit na branch master. Dessaformaé mantidolinearizadoohistóricodoscommitsnogit. # Para aplicar a correção da branch desenv na branch master com rebase: $ git checkout master $ git rebase desenv # First, rewinding head to replay your work on top of it... # Applying: Alterando textos do banner Stash Útil quandotem-se arquivoscriadose modificadosnaáreade trabalho,masainda,não desejacriarumcommit para os mesmos,poisaindanãoterminouafuncionalidade desejada.Portanto,casonecessite criaroutra funcionalidade oucorreçãode algumbug,semter que criar uma novabranch pode usar o stash. 1ª Forma: # Para fazer um novo stash na sua pilha, execute: $ git stash # Para ver as stashes que você guardou, você pode usar: $ git stash list
  • 6. # Para aplicar/retonar o último stash para área de trabalho $ git stash apply # Para Limpar a área temporária/stash $ git stash clear 2ª Forma: # Para fazer um novo stash salvando com um nome: $ git stash save {nome_stash} # Para retornar um stash específico: $ git stash apply stash{0} ou stash{1} ou stash{2} # Para deletar um stash $ git stash drop stash{0} ou stash{1} … Manipulandodados de um RepositórioRemoto Suponhaque você decidiuclonarumprojetode umrepositório remoto. # Para clonar um projeto versionado pelo git: $ git clone git@github.com:carlosanders/appInicialZF.git # Para pegar dados dos seus projetos remotos, você pode executar : $ git fetch origin Incorporaas alteraçõesde um repositórioremotonobranchatual.Emseu modopadrão,git pull é uma abreviaçãopara gitfetchseguidode gitmerge FETCH_HEAD. Porexemplo,se euestiveremuma branch chamada develope quiseratualizarcasohajaatualizaçõesremotamente. # Para Incorpora as alterações de um repositório remoto: $ git pull origin develop ManipulandoLogs Suponhaque você decidiuclonarumprojetode umrepositórioremoto. # Exibe log completo: $ git log --stat # Exibe log em uma linha: $ git log --pretty=oneline # Exibe log formantando saída: $ git log --pretty=format:"%h - %an, %ar : %s" # Exibe log em modo gráfico na linha de comando: $ git log --pretty=format:"%h %s" --graph # Exibe log de semanas atrás: $ git log --since=2.weeks # Exibe log em 4 linhas: $ git log –n 4 –oneline –decorate --parents ManipulandoDiffs O comandogit diff nosmostraas diferençasentre oworkingdirectorye oúltimocommit. # Exibe log completo: $ git diff # Para ver mudanças apenas da staging area: $ git diff --cached # Pra visualizar os commits em modo grafico pelo git: $ gitk --all & ManipulandoConfiguraçõesdo Git. O comandogit diff nosmostraas diferençasentre oworkingdirectorye oúltimocommit.. # Setando proxy no git: $ git config --global http.proxy http://06840680:master2016@proxy-i1.mb:6060 $ git config --global https.proxy http://06840680:master2016@proxy-i1.mb:6060 $ git config --global http.sslverify false # Para listar configurações: $ git config --list # Pra listar diretiva específica do git: $ git config --system --get https.proxy
  • 7. $ git config --global --get http.proxy $ git config --global --get https.proxy # Para remover uma diretiva específca do git: $ git config --global --unset http.proxy $ git config --global --unset https.proxy Repositório Local/Remoto Para trabalharcom algunscomandoreferente aorepositóriolocal e remoto. # Para clonar localmente um repositório. $ git clone {path/repo/.git} {nome_novo_repo} # Por convecção o repositório principal se chama origin # Pra listar o local de onde foi executado o clone $ git remote show origin # Para listar branch do repositório remoto $ git branch –a # Para enviar uma branch específica $ git push origin desenv Trabalhando com SVN no GIT Para trabalharcom algunscomandosreferente aumservidorde SVN. # Para clonar um projeto do svn no git $ git svn clone svn://local/do/svn/repo.svn # Para enviar uma modificação para o svn via git $ git svn dcommit –m “comentário” # Para resgatar os dados do svn via git $ git svn fecth