Git além do add/commit/pull/push Parte 2
- #Git
Parte 1 (status, log, show, diff, checkout, reflog e aliases)
Nesta segunda parte irei abordar conceitos que modificam e interagem com o histórico:
Sugestão de prática:
Crie uma branch(git branch -m ‘<nomeDaBranch>’) e pratique ao longo do aprendizado para que o entendimento e fixação sejam os melhores possíveis.
Obs2: Em caso de dúvidas sobre os comandos, recomendo o site da Atlassian como referência: https://www.atlassian.com/git ou basta uma boa e velha consulta no google sobre o comando, ex: atlassian git <comando>.
Segue abaixo um resumo dos principais comandos:
GIT RESET <opção>
· É um comando capaz de desfazer commits, revertendo assim, o estado da branch. Obs: altera o histórico de commits.
· Git reset --hard <referência>: Descarta completamente alterações feitas após o commit especificado como referência (deve ser usado com cautela).
· Git reset --soft <referência>: Retorna o estado da branch para a referência especificada, porém não descarta as alterações e sim as mantém na staging area (prontas para serem commitadas)
· Git reset <referência>: Similar ao reset --soft, porém as alterações “resetadas” retornam à working área (ainda não adicionadas).
GIT REVERT <opção>
· Comando que possui efeito parecido com o reset, reverte alterações, porém este as reverte ao adicionar um novo commit, cujas alterações “desfazem” o(s) commit(s) revertido(s).
· Git revert <referência>: desfaz alterações do commit referência, incluindo um novo commit no histórico.
· Git revert <referência1>.. <referência2>: Realiza o mesmo que o comando anterior, porém desfaz alterações de dois ou mais commits. (o primeiro valor não é inclusivo e o segundo é).
GIT REBASE <opção>
· Git rebase <nomeDaBranch>: Irá atualizar a minha branch atual com novos commits da branch especificada, a partir do ponto em comum no histórico das duas. Útil para atualizar a branch e evitar commits de merge desnecessários.
· Obs: Não deve ser utilizado uma vez que a base de código já foi compartilhada, pois altera o histórico de commits.
· Git rebase -i <referência>^: Irá abrir um editor de texto listando commits a partir da referência especificada até o HEAD(último commit). Esse comando irá permitir diversas alterações como, editar commits e juntar dois ou mais commits em um só.
· Para mais detalhes: https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase
GIT CHERRY-PICK
· Git cherry-pick <referência>: Aplica as modificações de um commit em uma determinada branch, na forma de um novo commit.
· Git cherry-pick <referência> --no-commit: a flag “--no-commit” faz com que as modificações sejam aplicadas, porém sem commita-las. Ficam na working área.
Com o conhecimento dos comandos detalhados nas partes 1 e 2, o desenvolvedor passa a ter um controle muito maior sobre o versionamento de código, podendo realizar consultas e alterações de estado de uma maneira flexível e inteligente.
Bons estudos! ✌