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



Telegram: https://t.me/allythy
GitHub: https://github.com/allythy
Site: https://allythy.github.io/
E-mail: allythy@phprn.org
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
- 390