Eu criei um bifurcação em um repositório github e trabalhei em meu repositório github.
Eu fiz solicitações de pull e ele foi concluído.
Depois disso, o upstream teve mais commits, então agora eu quero rebase, acho que é isso que tenho que fazer.
Mas estou recebendo estes conflitos de mesclagem:
First, rewinding head to replay your work on top of it...
Applying: Issue 135 homepage refresh
Using index info to reconstruct a base tree...
<stdin>:17: trailing whitespace.
%h4
warning: 1 line adds whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging app/views/layouts/application.html.haml
CONFLICT (content): Merge conflict in app/views/layouts/application.html.haml
Auto-merging app/views/home/index.html.haml
CONFLICT (content): Merge conflict in app/views/home/index.html.haml
Auto-merging app/views/home/_group_projects.html.haml
CONFLICT (content): Merge conflict in app/views/home/_group_projects.html.haml
Failed to merge in the changes.
Patch failed at 0001 Issue 135 homepage refresh
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".
Não sei como consertar isso, por favor me ajude.
git
github
git-rebase
Pahnin
fonte
fonte
Respostas:
Rebasing pode ser uma verdadeira dor de cabeça. Você tem que resolver os conflitos de mesclagem e continuar rebasing. Por exemplo, você pode usar a ferramenta de mesclagem (que difere dependendo de suas configurações)
Em seguida, adicione suas alterações e vá em frente
Boa sorte
fonte
Quando você tem um conflito durante o rebase, você tem três opções:
Você pode executar
git rebase --abort
para desfazer completamente o rebase. O Git o retornará ao estado do seu branch como estava antes de o git rebase ser chamado.Você pode executar
git rebase --skip
para pular completamente o commit. Isso significa que nenhuma das mudanças introduzidas pelo commit problemático será incluída. É muito raro você escolher essa opção.Você pode consertar o conflito como o iltempo disse. Quando terminar, você precisará ligar
git rebase --continue
. Meu mergetool é o kdiff3, mas há muitos outros que você pode usar para resolver conflitos. Você só precisa definir sua ferramenta de mesclagem nas configurações do git para que possa ser invocada quando você chamargit mergetool
https://git-scm.com/docs/git-mergetoolSe nenhuma das opções acima funcionar para você, dê uma caminhada e tente novamente :)
fonte
<<<<<
Se você tem muitos commits para rebase, e alguma parte deles está gerando conflitos, isso realmente machuca. Mas posso sugerir uma abordagem menos conhecida como "esmagar todos os conflitos".
Primeiro, verifique o branch temporário e inicie a mesclagem padrão
Você terá que resolver conflitos, mas apenas uma vez e apenas os reais. Em seguida, prepare todos os arquivos e conclua a fusão.
Em seguida, volte ao seu branch (que seja alfa ) e inicie o rebase, mas com resolução automática de quaisquer conflitos.
O ramo foi rebaseado, mas o projeto provavelmente está em estado inválido. Tudo bem, temos uma etapa final. Precisamos apenas restaurar o estado do projeto, para que seja exato como no branch 'temp'. Tecnicamente, só precisamos copiar sua árvore (estado da pasta) por meio do comando de baixo nível git commit-tree . Além disso, a fusão no branch atual acabou de criar o commit.
E deletar branch temporário
Isso é tudo. Fizemos um rebase via mesclagem oculta.
Também escrevi um script, para que possa ser feito em forma de diálogo, você encontra aqui .
fonte
Nota: com Git 2.14.x / 2.15 (Q3 2017), o
git rebase
mensagem em caso de conflito será mais clara.Veja o commit 5fdacc1 (16 de julho de 2017) de William Duclot (
williamdclt
) .(Incorporado por Junio C Hamano -
gitster
- no commit 076eeec , 11 de agosto de 2017)Antes:
Depois de:
fonte