A primeira coisa que quero esclarecer é que os nomes das ramificações são apenas um alias para um commit específico. um commit é o que o git funciona, quando você puxa, empurra a mesclagem e assim por diante. Cada confirmação tem um ID exclusivo.
Quando você faz a mesclagem $ git, o que realmente está acontecendo é que o git tenta avançar rapidamente sua ramificação atual para a confirmação da ramificação referenciada (em outras palavras, os nomes de duas ramificações apontam para a mesma confirmação.) Esse cenário é o mais fácil para o git para lidar, já que não há novo commit. Pense no mestre pulando no lilipad em que seu ramo está relaxando. É possível definir o sinalizador --no-ff; nesse caso, o git criará um novo commit, independentemente de haver algum conflito de código.
Em uma situação em que há conflitos de código entre as duas ramificações que você está tentando mesclar (geralmente duas ramificações cujo histórico de consolidação compartilham uma consolidação comum no passado), o avanço rápido não funcionará. O git ainda poderá mesclar os arquivos automaticamente, desde que a mesma linha não tenha sido alterada pelos dois ramos em um arquivo em conflito. nesse caso, o git mesclará os arquivos conflitantes para você e os confirmará automaticamente. Você pode visualizar como o git se saiu fazendo $ git diff --cached. Ou você pode passar o sinalizador --no-commit para o comando mesclar, que deixará os arquivos modificados no seu índice e você precisará adicionar e confirmar. Mas você pode $ git diff esses arquivos para revisar o que a mesclagem mudará.
O terceiro cenário é quando há conflitos que o git não pode resolver automaticamente. Nesse caso, você precisará mesclá-los manualmente. Na minha opinião, é mais fácil fazer uma mesclagem, como araxis merge ou p4merge (grátis). De qualquer maneira, você deve fazer cada arquivo um por um. Se a mesclagem parecer travada, use $ git merge --continue, para acompanhá-la. O Git deve dizer se não pode continuar e, se sim, por que não. Se você sentir que perdeu a mesclagem em algum momento, poderá fazer a mesclagem $ git --abort, e qualquer fusão será desfeita e você poderá começar de novo. Quando terminar, cada arquivo que você mesclou será um arquivo modificado que precisará ser adicionado e confirmado. Você pode verificar onde os arquivos estão com o status $ git. Se você ainda não confirmou os arquivos mesclados. Você precisa fazer isso para concluir a mesclagem.
git commit gf2n.cpp -m "Hand merge gf2n.cpp due to conflicts"
, ele resulta emfatal: cannot do a partial commit during a merge.
. E, é claro, "confirmações parciais" não parecem estar documentadas ou discutidas em nenhum lugar nas páginas do manual do git. Executar umgit merge
após a correção resulta emPlease, commit your changes before you can merge.
que ferramenta de bunda quebrada ...