Como Git Rebase

Como Git Rebase
Git Rebase é um utilitário de mesclagem como Merge do Git. Mas a maneira como eles funcionam é diferente.

Neste artigo, falarei sobre como o Git Rebase funciona, as diferenças entre Git Rebase e Git Merge e como trabalhar com Git Rebase. Então vamos começar.

Git Rebase:

Digamos que você tem um repositório Git com os compromissos A, B, C no mestre filial. Então, você criou um novo ramo Algum -Branch e acrescentou 2 novos compromissos D e E para o Algum -Branch filial.

Fig 1: Histórico de Commits Inicial.

Agora, digamos, você esqueceu de adicionar algo no mestre filial. Então, você volta ao mestre ramificar e adicionar uma nova confirmação G para o mestre filial. Seu histórico de git deve parecer o seguinte.

Fig 2: Compricle History After Adicionar Commit G no ramo mestre.

Tudo parece bem. Agora, se você quisesse todas as alterações que você fez para o Algum -Branch ramo para estar no mestre ramo, você pode mesclar o Algum -Branch ramo para o mestre filial. É isso que git mesclar fazer.

E se você quiser o compromisso G estar disponível no Algum -Branch filial? Bem, você pode usar o Git Rebase para isso.

Da história do compromisso na Fig 2, você pode ver que o ramo Algum -Branch começa a partir do compromisso C. Se você fizer uma rebase git em Algum -Branch, então começaria a partir do commit G Como mostrado na Fig 3 abaixo. Observe que, o conteúdo do compromisso D e E mudará também após a operação de rebase. Os compromissos D e E incluirá as mudanças no compromisso G. É por isso que eu adicionei * símbolo antes dos compromissos D e E.

Se você quiser saber como seria a história do commit se eu a mesclar, dê uma olhada na Fig 4. Eu o incluí apenas para que você possa compará -lo com o git rebase.

Fig 4: Compricle History se a mesclagem do Git foi usada.

Agora que você sabe o que é Git Rebase, a diferença entre Git Rebase e Git Merge e por que o Git Rebase que ele usou, mostrarei como usá -lo na próxima seção deste artigo abaixo.

Git Rebase Workflow:

Nesta seção, criarei um novo repositório Git no meu computador local e mostrarei como o Git Rebase funciona. Eu recomendo que você tenha um bom entendimento do Git Rebase antes de aplicá -lo em seu projeto.

Primeiro, crie um novo repositório Git Rebase-deMo/ no seu computador da seguinte forma:

$ git init rebase-Demo

Agora, navegue para o Rebase-deMo/ diretório da seguinte maneira:

$ CD Rebase-Demo/

Agora, crie um novo arquivo teste.TXT do seguinte modo:

$ echo "a"> teste.TXT

O teste.O arquivo txt contém apenas uma linha A. Digamos, este é o seu código de projeto inicial.

Agora, comprometa as mudanças da seguinte maneira:

$ git add .
$ git Commit -m 'a'

Agora, adicione outra linha B para o teste.TXT arquivo como mostrado na captura de tela abaixo.

Agora, comprometa as mudanças da seguinte maneira:

$ git add .
$ git Commit -M 'B'

Agora, vamos adicionar outra linha C ao teste.TXT arquivo.

Além disso, comprometa as mudanças da seguinte maneira:

$ git add .
$ git commit -m 'c'

Agora, o histórico de compromissos do ramo principal deve parecer o seguinte:

$ git log --oneeline

Agora, digamos, você tem algumas novas idéias que deseja experimentar. Então, vamos criar e fazer check -out para uma nova filial novo recurso do seguinte modo:

$ git checkout -b -rumor novo

Agora, adicione sua nova ideia (a linha D digamos) para o teste.TXT arquivo.

Agora, comprometa as mudanças da seguinte maneira:

$ git add .
$ git Commit -m 'd'

Agora, adicione a linha E ao teste.TXT arquivo.

Compreenda as mudanças da seguinte forma:

$ git add .
$ git Commit -m 'e'

Agora, a história do compromisso do novo recurso A filial deve parecer o seguinte:

$ git log --oneeline

Veja como são os compromissos em ordem um < B < C < D < E?

Agora, você se lembra de que esqueceu de adicionar algo ao mestre ramo que você também queria estar no novo recurso filial! Então, consulte o mestre filial.

Eu adicionei uma nova linha no final do teste.TXT arquivo como você pode ver.

Agora, comprometa as mudanças da seguinte maneira:

$ git add .
$ git Commit -m 'g'

Agora, a história do compromisso do mestre o ramo deve ficar assim.

A < B < C < G

Agora, para refazer os compromissos do mestre ramo para o novo recurso ramo, primeiro check -out para o novo recurso filial.

$ git checkout-rumor novo

Agora, faça uma rebase git do mestre ramo da seguinte forma:

$ git rebase mestre

Alguns mesclados conflitam! Vamos consertar isso.

Bem, as mudanças que fiz no commit G e D são conflitantes um com o outro. Eu quero manter esses dois.

Depois de consertar o conflito de mesclagem, o teste.TXT O arquivo deve parecer o seguinte:

Agora, adicione as alterações à área de preparação da seguinte forma:

$ git add .

Agora, continue o Rebase operando da seguinte maneira:

$ git rebase -Continue

Outro conflito de mesclagem! Bem, isso pode acontecer. Rebase muda o histórico de comprometimento do git. Então, coisas assim são esperadas.

Parece que o processo de mesclagem falhou devido a algumas linhas vazias. Vamos consertar isso.

Depois de consertar o conflito de mesclagem, o teste.TXT o arquivo deve parecer o seguinte.

Agora, adicione as alterações à área de preparação da seguinte forma:

$ git add .

Agora, continue a operação de rebase da seguinte maneira:

$ git rebase -Continue

Git Rebase está completo.

Como você pode ver, o histórico de compromissos do novo ramo é atualizado. Agora, a história do commit é a seguinte:

A < B < C < G < D < E

Assim como o esperado.

O final teste.TXT o arquivo deve parecer o seguinte.

Git Rebase é uma ferramenta poderosa. Mas, você nunca deve usá -lo em repositórios compartilhados do Git. Use -o apenas nos repositórios Git que você trabalha apenas. Caso contrário, você enfrentará muitos problemas ao longo do caminho.

Então, é assim que você usa o git rebase. Obrigado por ler este artigo.