a maioria das integrações de código acontecem com um merge, mas ocasionalmente um desenvolvedor quer obter seu código local pego com o branch master através de um rebase em vez disso. Neste exemplo, vamos demonstrar como git rebase um branch para master em vez de usar o comando merge, enquanto também aponta o impacto de realizar um ajuste git para operação principal.
o que git rebase para a média mestre?,
neste tutorial, vamos pegar o ramo chamado desenvolver e refazê-lo na ponta do mestre.
O ramo de desenvolvimento partiu-se do master no commit C, por isso ambos os ramos partilham os ficheiros a.html, b.html e c.html. Veja a imagem abaixo para ajudar a visualizar isto.
desde que o ramo ocorreu, master adicionou commits D E E. Isto significa que master tem dois arquivos que o desenvolvimento não tem, nomeadamente d.html e e.html.,
Esta é a forma como o repositório Git parece antes de um git rebase master.
além disso, desde a divisão, houve dois novos commits no ramo de desenvolvimento, adicionando os arquivos f.html e g.html. Estes são os arquivos que o ramo de desenvolvimento tem que o ramo mestre não tem.
Esta é a forma como o GitLab repositório olha depois que o git rebase master.,
o Impacto do Git rebase
Depois de uma bem sucedida desenvolver ramo de mestre rebase:
- Os arquivos no branch master não vai mudar
- A desenvolver ramo, adicionalmente, a adquirir a totalidade do branch master do novo ficheiros
- A desenvolver fluxo ramo do ponto será alterado.
- aparecerá como se o ramo de desenvolvimento se dividisse após o commit E no ramo mestre.
- antes do ajuste, o ramo de desenvolvimento se separou do mestre no commit C.,
git rebase para a sintaxe do comando mestre
a operação para executar um ajuste do Git para o master é para a frente. Simplesmente adicione ao fim do comando o nome do ramo de origem e, em seguida, o nome do ramo para ajustar. Para alterar a base de desenvolver a dominar o comando é o seguinte:
git rebase master develop
Aviso: Não é um git rebase na chave que, às vezes, os desenvolvedores acreditam incorretamente eles precisam incluir com a alterar a base de comando. Ao fazê-lo, fará com que os commits sejam discared e os arquivos sejam perdidos., Não cometa o erro de realizar um ajuste de git na operação.
antes do rebase, o departamento de desenvolvimento tinha apenas cinco arquivos.
Cada ramo tem cinco arquivos antes de o git rebase master operação.
após o ajuste de Git para master, o ramo de desenvolvimento tem sete arquivos. Ele reteve todos os seus arquivos originais e adquiriu dois novos arquivos da ponta do branch mestre., No entanto, o número de arquivos no ramo mestre permanece inalterado.
Após o git rebase de desenvolver o mestre, a desenvolver ramo adquire todos mestrado arquivos.
o fato de que o ramo mestre não adquiriu nenhum arquivo do ramo de desenvolvimento muitas vezes joga novos usuários Git fora, mas este é o comportamento esperado. Um ajuste git não sincroniza entre os ramos. Simplesmente apanha um ramo com as últimas mudanças de outro.,
O número de arquivos em desenvolver a aumentar após o git rebase master.
proceder com precaução
quando ocorre um ajuste de Git, o histórico de commit do repositório é irreparavelmente alterado. Após o ajuste em nosso exemplo, commits F E G são atribuídos IDs de commit novinhos, e os ids de commit antigos são descartados. Por esta razão, muitas vezes você verá commits rebatizados marcados como F’ E G’ para enfatizar o fato de que novos ids de commit foram atribuídos.,
Se você alterar a base de um ramo compartilhado com outro desenvolvedor e empurrar suas alterações de volta para o GitHub ou GitLab, um colega desenvolvedor será executado em uma variedade de problemas ou quando eles tentam puxar o realocados repositório em seu local de ambiente de desenvolvimento. Os Commits que têm localmente terão desaparecido no remoto, e o ramo remoto terá um histórico de ramificações incompatível. Como você pode imaginar, rebater um ramo compartilhado ou esmagar git commits pode causar estragos.,
Rebase para GitHub ou GitLab
na verdade, se você refazer e tentar empurrar para GitLab ou GitHub, o servidor não permitirá que a operação seja realizada. Para se ajustar ao GitHub ou GitLab, um desenvolvedor deve adicionar o switch –force ao comando git push para obrigar as alterações a serem aceitas.
git push origin --force
Um GitLab ou GitHub alterar a base de empurrar serão rejeitadas, a menos forçado.,
a lógica aceite é apenas ajustar git para ramificações principais locais para o seu espaço de trabalho pessoal. Assim, os teus comandos de limpeza não afectam mais ninguém. Não execute um ajuste de git para master em ramos compartilhados com outros desenvolvedores. Um ajuste para o mestre é bom, mas não o contrário. Caso contrário, é provável que você quebre as operações de build e push ou pull será colocado em stand-by, frustrando o desenvolvimento contínuo e tornando-o persona non grata com o resto dos desenvolvedores e equipe DevOps.