Using 'git cherry-pick' to Simulate 'git rebase'
Depois que você entende o git cherry-pick
, você pode começar a pensar no git rebase
como uma maneira mais rápida de fazer cherry-pick de todos os commits de um branch de uma vez, em vez de ter que digitar os seus IDs separadamente.
(Isso é apenas o início do que o rebase pode fazer, mas eu vou escrever o resto desta seção outra hora.)
Vamos voltar ao nosso exemplo, mas desta vez adicionar alguns branches...

Agora, eu poderia digitar esta sequência de comandos:
git checkout foo
git checkout -b newbar
git cherry-pick C D E
Nessa ordem, esses comandos:
- garantem que estamos em H (porque 'foo' aponta para ele),
- criam e fazem o checkout de um branch temporário chamado "newbar", também apontando para H,
- aplicam as mudanças de C, D, e E, criando os novos commits C', D', e E', e atualizam o branch "newbar" para que ele aponte para E'.
O que me daria um repositório que pareceria com isso:

Então, eu poderia digitar isso:
git checkout bar
git reset --hard newbar
git branch -d newbar
O que:
- Trocaria para o branch chamado "bar",
- Forçaria o ponteiro do branch "bar" para que ele apontasse para o mesmo local que o branch "newbar" (e, graças ao flag --hard, atualizaria o meu diretório de trabalho para ficar igual ao novo local), e
- Deletaria o branch temporário "newbar".
E deixaria o meu repositório parecido com isso (note que os vértices D e E originais não são mais alcançáveis, já que nenhum branch aponta para eles):

Ou, eu poderia fazer tudo isso digitando o seguinte:
git rebase foo bar
Em outras palavras, 'git rebase' (nesta forma) é um atalho que permite que você pegue seções inteiras de um repositório e as mova para algum outro lugar.
- About This Site
- Git Makes More Sense When You Understand X
- Example 1: Kent Beck
- Example 2: Git for Ages 4 and Up
- Example 3: Homeomorphic Endofunctors
- Example 4: LSD and Chainsaws
- The Internet Talks Back!
- Graph Theory
- Seven Bridges of Königsberg
- Places To Go, and Ways to Get There
- Nodes and Edges
- Attaching Labels to Nodes
- Attaching Labels to Edges
- Directed Versus Undirected Graphs
- Reachability
- Graphs and Git
- Visualizing Your Git Repository
- References
- The Reference Reference
- Making Sense of the Display
- Garbage Collection
- Experimenting With Git
- References Make Commits Reachable
- My Humble Beginnings
- Branches as Savepoints
- Use Your Targeting Computer, Luke
- Testing Out Merges
- Rebase From the Ground Up
- Cherry-Picking Explained
- Using 'git cherry-pick' to Simulate 'git rebase' ←HEAD
- A Helpful Mnemonic for 'git rebase' Arguments
- The End