Este repositório traz algumas dicas úteis e alguns conceitos para você utilizar Git em seu dia a dia, e serve como roteiro para minha talk, de mesmo nome, para meu time de web.
Não tenha medo do Git e não tenha medo de errar. Ele é seu amigo e pode te ajudar no dia a dia, além de ajudar outros desenvolvedores a entenderem seu código.
Começaremos a olhar um projeto muito simples (sim, gênios do renascimento pq não?), e adicionaremos algumas funcionalidades a ele, eventualmente nos deparando com alguns problemas do dia a dia, como conflitos.
Também faremos rebases, deletaremos branches e commits por acidente, cometeremos alguns erros, precisaremos de commits que ainda não chegaram à main
...
Resumindo, tudo o que nós vivemos no dia a dia, né? Temos muito a cobrir, então let's start!
Configure suas credenciais, com nome e email:
$ git config --global user.name "Da Vinci"
$ git config --global user.email da.vinci@renaissance.com
Configure também seu editor padrão (recomendo vi ou vim, para sair dele utilize o comando :quit
)
$ git config --global core.editor vim
Por fim, clone um projeto para começar a trabalhar. Ou inicie um projeto git através do comando git init
.
Este capítulo apresenta a branch principal, main
, refletindo o trabalho de uma equipe qualquer.
Ela possui alguns commits que configuram o projeto, porém, a partir de um certo ponto, novas branches de trabalho foram criadas a partir dela.
O diagrama abaixo apresenta este momento do projeto:
De acordo com a documentação oficial, o merge "une dois ou mais históricos de desenvolvimento".
Vejamos o seguinte exemplo para entendermos git merge
de uma vez por todas.
Supondo que o dev que esteja trabalhando na branch secao-dama-com-arminho
tenha finalizado sua feature e agora deseje atualizar sua branch com a main
, afinal a branch principal de trabalho desta equipe continuou avançando.
Então, para atualizar a branch, é utilizado o comando git pull origin main
. Seu editor configurado no Capítulo I então aparecerá com a seguinte mensagem pré definida:
Merge branch 'main' of github.com:MarianaPicolo/git-everyday-basics into secao-dama-com-arminho
Salve e saia do editor.
Se você configurou vi ou vim, pode salvar o arquivo e sair utilizando o comando
:wq
.
Por fim, o Git exibirá a seguinte mensagem:
From github.com:MarianaPicolo/git-everyday-basics
* branch main -> FETCH_HEAD
Auto-merging project/index.html
Merge made by the 'recursive' strategy.
README.md | 6 +++++-
project/index.html | 10 +++++-----
starting.png | Bin 0 -> 102669 bytes
3 files changed, 10 insertions(+), 6 deletions(-)
create mode 100644 starting.png
Não tivemos conflitos, e agora a branch secao-dama-com-arminho
está atualizada em relação a main
, resultando na seguinte árvore de commits:
Perceba que as hashes dos commits que estavam na main
permaneceram como antes do merge (balões em azul), mas o commit que insere a nova feature(adiciona secao dama com arminho) ficou entre dois commits que estavam previamente na main
.
Isso acontece porque o git merge
preserva a árvore de commits.......