Git merge recursivo não fazer o que eu quero
Pergunta
Existe uma maneira de ter Git forçar uma resolução manual para um arquivo quando o arquivo foi editado em ambos os ramos?
O meu problema é que eu quero algumas das mudanças de um ramo e algumas das mudanças do outro. Acontece que essas mudanças nem sempre passo em si, mas o algoritmo nem sempre é escolher a mudança correta.
Um aviso coisa que eu, é o arquivo base no 3-way merge não é o que eu estava esperando. É possível ter Git usar um arquivo escolhido a partir de um ramo como a base?
Nenhuma solução correta
Outras dicas
Se detecta git conflitos em um arquivo que será sempre pedir-lhe para editar (ou use uma ferramenta de mesclagem) para corrigir os conflitos. Neste caso, você pode corrigi-lo no entanto você gosta, antes de encenar-lo.
Se git não detectou conflitos em um arquivo particular, mas detectou conflitos em outro lugar, então você pode sempre corrigir esse arquivo em particular e adicionar as correções (git add
) antes de fazer a fusão cometer.
Neste caso, você pode acessar as duas versões de pais diferentes de arquivo via git show HEAD:path/to/file
e git show MERGE_HEAD:path/to/file
. Você pode redirecionar a saída git show
para temporários, se você quiser abri-los em um editor, diz.
Depois de corrigir o arquivo e resolvidas quaisquer outros conflitos pode encenar a correção (git add
) e fazer o merge commit (git commit
).
Se git não detectou nenhum commit ele vai fazer o merge cometer sem mais avisos.
Neste caso, você ainda pode corrigir o seu arquivo. As duas versões pais são acessíveis através git show HEAD:path/to/file
e git show HEAD^2:path/to/file
.
Uma vez que você fixa-se o arquivo que você pode encenar (git add
) e refazer a fusão comprometer com git commit --amend
.