Git e gitlab para equipes e contribuição em projetos

@allythy

Projetos  em equipe

Use Branch

O que é uma Branch ?

Uma branch é uma novo linha de desenvolvimento que permite isolar o código de uma nova funcionalidade, matendo a linha base estáve, evitando o represamento de código. No git, o uma branch é apenas uma referência para um commit.

Criando uma branch

git branch nome-da-branch

Exibindo as branch do repositório

git branch

Trocando de branch

git checkout nome-da-branch

Como o Git sabe o branch em que você está atualmente ?

Ele mantém um ponteiro especial chamado HEAD

Cenário:

touch arquivo1
git add .
git commit -m "branch testing"
git checkout master

Como o Git sabe o branch em que você está atualmente ?

git merge nome-da-branch

Fazendo o merge

O que é um merge Fast forward ?

Criando uma divergência entre as branch

Cenário:

touch arquivo3
git add .
git commit -m "branch master"
git checkout testing
touch arquivo2
git add .
git commit -m "branch testing"
git checkout master

Fazendo o merge

git merge testing

Gerando um conflito

Cenário:

vim arquivo1
git add .
git commit -m "branch master"
git checkout testing
vim arquivo1
git add .
git commit -m "branch testing"
git checkout master

Resolvendo um conflito

git status

Resolvendo um conflito

<<<<<<< HEAD
<h1>titulo</h1>
=======
<h1>outro titulo</h1>
>>>>>>> testing
git add .
git merge --continue

Workflow Git

 Centralized Workflow

  • Branch única
  • Fluxo de trabalho parecido para quem vem do SVN
  • Equipes pequenas

Feature Branch Workflow

  • Uma branch para cada funcionalidade
  • Evita muitos conflitos
  • Trabalho em paralelo
  • Bom para equipes grandes

Git FLow

Desfazendo alterações

Modificar a mensagem do último commit:

git commit --amend

Você fez o um commit e esqueceu de colocar um arquivo que estava na staging area:

git commit -m 'primeiro commit'
git add novoArquivo
git commit --amend

Desfazendo um Arquivo Modificado

touch arquivo
git add arquivo
git status
echo "mensagem" > arquivo
git status

Quero descartar essa modificação:

git checkout -- arquivo

Cenário:

Tirando um arquivo da Staging Area

git reset arquivo

Desfazendo um commit

--soft
--mixed
--hard

Desfaz um commit, mas deixa os arquivos na Staging Area

git reset --soft HEAD~1

Desfaz um commit, mas deixa os arquivos na working directory

git reset --mixed HEAD~1

Desfaz o commit deixando igual ao commit que você informou, sem nada na Staging Area ou no working directory

git reset --hard HEAD~1

Tem como desfazer um reset ?

git reflog
git reset --hard número-do-commit

Entregando as ""funcionalidades""

Merge request

Criando template:

.gitlab/merge_request_templates/contributions.md

cenário PERFEITO

A REALIDADE

contribuindo COM PROJETOS

Trabalhando com remotos

Exibindo os repositórios remotos

git remote
git remote -v

Adicionando um repositório remoto

git remote add [nome] [url]
git remote add site git://github.com/allythy/Minicurso.git

Exemplo:

Sintaxe:

Enviando arquivos para o repositório remoto

git push [nome-remoto] [branch]
git push origin master

Exemplo:

Sintaxe:

Baixando arquivos do repositório remoto

git pull
git fetch [nome-remoto]

Sintaxe:

ou

git fetch origin

Exemplo

git merge origin/master

Renomeando Remotos

git remote rename [nome-atual] [novo-nome]

Sintaxe:

git remote rename site blog

Exemplo

Apagando o repositório remoto:

git remote rm [name]

Sintaxe:

git remote rm site

Exemplo

Obrigado

Git para equipes e contribuição em projetos de software livre

By allythy

Git para equipes e contribuição em projetos de software livre

  • 357