Eu sou um noob no Git, e tentando aprender a diferença entre git pullvs git rebase. Alguém pode dar um exemplo de quando usar qual opção, já que sinto que ambas têm o mesmo propósito.
Eu sou um noob no Git, e tentando aprender a diferença entre git pullvs git rebase. Alguém pode dar um exemplo de quando usar qual opção, já que sinto que ambas têm o mesmo propósito.
Respostas:
git pulle git rebasenão são intercambiáveis, mas estão intimamente ligados.
git pullobtém as alterações mais recentes do branch atual de um remoto e aplica essas alterações à sua cópia local do branch. Geralmente, isso é feito por mesclagem, ou seja, as mudanças locais são mescladas com as mudanças remotas. Então git pullé semelhante a git fetch & git merge.
Rebasing é uma alternativa à fusão. Em vez de criar um novo commit que combina os dois branches, ele move os commits de um dos branches para cima do outro.
Você pode fazer pull usando rebase em vez de merge ( git pull --rebase). As alterações locais que você fez serão realocadas sobre as alterações remotas, em vez de serem mescladas com as alterações remotas.
Atlassian tem uma documentação excelente sobre fusão vs. rebase .
git-pull - Buscar e integrar com outro repositório ou um branch local GIT PULL
Basicamente, você está puxando um branch remoto para seu local, por exemplo:
git pull origin master
Irá puxar o branch master para o seu repositório local
git-rebase - Forward-port local commits para o upstream head GIT REBASE atualizado
Este é colocar suas mudanças locais no topo das mudanças feitas remotamente por outros usuários. Por exemplo:
SOME-FEATUREAgora você deseja ver as mudanças dele e de sua filial local. Então você checkout masterbranch:
git checkout master
então você pode puxar:
git pull origin master
e então você vai para sua filial:
git checkout SOME-FEATURE
e você pode fazer o rebase masterpara obter as últimas alterações dele e colocar seus commits de branch no topo:
git rebase master
Espero que agora esteja um pouco mais claro para você.
git fetchentão git rebase origin/master.
Resumindo:
-> Git Merge: Ele simplesmente mesclará suas alterações e as remotas, e isso criará outro registro de histórico de commits
-> Git Rebase: Colocará suas mudanças acima de todas as novas mudanças remotas e reescreverá o histórico de commits, então seu histórico de commits será muito mais limpo do que o git merge. Rebase é uma operação destrutiva. Isso significa que, se você não aplicá-lo corretamente, poderá perder o trabalho confirmado e / ou quebrar a consistência dos repositórios de outros desenvolvedores.