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.
Sim eu fiz. A diferença entre pull e rebase é que pull faz uma fusão. Portanto, a resposta à sua pergunta está no link que colei.
Thibault D.
1
@ user4943236 1) você nem sabe quem votou contra a sua pergunta, não saia por aí acusando as pessoas sem motivo 2) se fosse o meu voto negativo, eu não o removeria simplesmente porque é tão fácil encontrar uma resposta lendo documentação
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.
Você não precisa fazer o checkout mestre. Fique no seu ramo e faça: git fetchentão git rebase origin/master.
Antoine Martin
Ao verificar o mestre local e, em seguida, puxar o mestre de origem, o mestre local também será atualizado. Esta é uma das melhores práticas que deve ser usada
Ashwani,
20
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.
Respostas:
git pull
egit rebase
não são intercambiáveis, mas estão intimamente ligados.git pull
obté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ãogit pull
é semelhante agit 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 .
fonte
Basicamente, você está puxando um branch remoto para seu local, por exemplo:
Irá puxar o branch master para o seu repositório local
Este é colocar suas mudanças locais no topo das mudanças feitas remotamente por outros usuários. Por exemplo:
SOME-FEATURE
Agora você deseja ver as mudanças dele e de sua filial local. Então você checkout
master
branch:então você pode puxar:
e então você vai para sua filial:
e você pode fazer o rebase
master
para obter as últimas alterações dele e colocar seus commits de branch no topo:Espero que agora esteja um pouco mais claro para você.
fonte
git fetch
entãogit 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.
fonte