Rebasing
O rebase permite que você incorpore alterações de uma ramificação para outra modificando o histórico de confirmação. Ele repete os commits do branch de origem para o branch de destino. Isso resulta em um histórico de confirmação mais limpo e linear.
Exemplo: digamos que você tenha uma ramificação de recurso chamada feature-branch
e deseja incorporar as últimas alterações da main
ramificação. Você pode usar o seguinte comando:
git checkout feature-branch
git rebase main
Isso aplicará os commits da main
ramificação no arquivo feature-branch
. Qualquer conflito precisará ser resolvido durante o processo de rebase.
Stashing
O stashing permite que você salve suas alterações atuais, que não estão prontas para serem confirmadas, e reverta temporariamente para um diretório de trabalho limpo. Isso é útil quando você precisa mudar para uma ramificação diferente ou trabalhar em um recurso diferente sem confirmar as alterações nas quais está trabalhando no momento.
Exemplo: digamos que você esteja trabalhando em uma ramificação de recurso e fez algumas alterações, mas precisa mudar para outra ramificação. Você pode usar os seguintes comandos para ocultar suas alterações:
git stash
depois de mudar para a nova ramificação, você pode aplicar as alterações ocultas usando:
git stash apply
Git Hooks
Git Hooks
são scripts acionados por eventos específicos do Git, como pré-commit, post-commit, pré-push, etc. Eles permitem que você automatize determinadas ações ou imponha regras específicas em seu fluxo de trabalho.
Exemplo: suponha que você queira executar um linter em seu código antes de confirmar. Você pode criar um script de gancho pré-confirmação que acione o linter e impeça a confirmação se houver algum erro de linting.
Git Submodule
Git Submodule
permitem que você inclua outro repositório Git como um subdiretório dentro do seu repositório principal. Isso é útil quando você tem um projeto que depende de bibliotecas ou componentes externos.
Exemplo: Você tem um projeto que requer uma biblioteca específica. Em vez de duplicar o código da biblioteca em seu repositório, você pode adicioná-lo como um submódulo. Dessa forma, você pode manter o código da biblioteca separado e atualizá-lo facilmente quando necessário.
Git Revert and Git Reset
Git Revert
desfaz um commit anterior criando um novo commit que desfaz as alterações feitas no commit original. Git Reset
, por outro lado, permite que você mova o ponteiro do branch para um commit diferente, efetivamente descartando commits do histórico de commits.
Exemplo: Se você deseja desfazer o último commit, pode usar git revert HEAD
para criar um novo commit que desfaça as alterações feitas no último commit. Se você quiser descartar o último commit completamente, você pode usar git reset HEAD~1
para mover o ponteiro do branch para trás em um commit.
Esses conceitos avançados no Git fornecem recursos poderosos para gerenciar seu repositório de forma eficaz. Entender como usá-los e quando aplicá-los aprimorará muito o fluxo de trabalho e o gerenciamento de projetos do Git.