Existe alguma maneira de simular um git merge
entre dois ramos, o ramo de trabalho atual e o mestre, mas sem fazer alterações?
Muitas vezes tenho conflitos quando preciso fazer um git merge
. Existe alguma maneira de simular a mesclagem primeiro?
Existe alguma maneira de simular um git merge
entre dois ramos, o ramo de trabalho atual e o mestre, mas sem fazer alterações?
Muitas vezes tenho conflitos quando preciso fazer um git merge
. Existe alguma maneira de simular a mesclagem primeiro?
Respostas:
Acho que não há uma maneira de simular o que acontecerá até você tentar a mesclagem. No entanto, se você certificar-se de que a saída de git status
esteja vazia antes de fazer a mesclagem, é bastante seguro seguir em frente e testá-la. Se você tiver conflitos, poderá voltar imediatamente ao estado em que estava antes com:
git reset --merge
Desde o git 1.7.4, você também pode cancelar a mesclagem fazendo:
git merge --abort
(Como a mensagem de confirmação que adicionou essa opção explica , ela foi adicionada para consistência git rebase --abort
e assim por diante.)
--no-commit
é muito mais fácil na minha opinião
--no-commit
você ainda esteja alterando o índice e a árvore de trabalho, o que não é exatamente "sem fazer alterações" :) Meu argumento é que quando as pessoas perguntam esse tipo de pergunta, geralmente é porque eles não sabem que a melhor maneira de ver como seria uma mesclagem é apenas tentar a mesclagem , geralmente porque eles não sabem como é fácil voltar ao estado em que estavam antes se acabou por haver problemas.
git merge --abort
é equivalente a git reset --merge
quando MERGE_HEAD
está presente", então, o que for mais fácil de lembrar :)
Você pode usar git merge --no-commit
para impedir que a mesclagem seja realmente confirmada e, se você não gostar de como a mesclagem funciona, basta redefinir a cabeça original.
Se você definitivamente não quiser finalizar a mesclagem, mesmo que seja um avanço rápido (e, portanto, sem conflitos, por definição), você pode adicionar --no-ff
também.
git merge --abort
exista - talvez você queira dizer git reset --merge
?
rebase
não há um --abort
para git merge
.
--no-ff
também. Para impedir que uma mesclagem ff ocorra.
--no-ff
é praticamente obrigatório aqui, pois --no-commit
não impede as alterações de avanço rápido.
Se eu quiser comparar as alterações em uma ramificação de tópico para dominar, acho mais fácil e seguro fazer o seguinte:
git checkout master
git checkout -b trial_merge
git merge topic_branch
Depois de concluir a mesclagem, é fácil ver a alteração consolidada do mestre
git diff master
Quando terminar, basta excluir o ramo trial_merge
git checkout master
git branch -D trial_merge
Dessa forma, o ramo mestre nunca muda.
git checkout --detach
e testar o que quiser. Mais tarde, se você quiser manter suas alterações, faça git checkout -b new_branch
. E se você quiser jogar fora suas alterações, faça o checkout de qualquer ramo que desejar ( git checkout master
).
topic_branch
for grande (como provavelmente é o caso se você estiver nessa questão em primeiro lugar), o diff master
resultado provavelmente será muito grande para você observar se uma mesclagem causará conflitos.
Eu uso :
git merge --ff-only
de acordo com a documentação :
Recuse-se a mesclar e sair com um status diferente de zero, a menos que o HEAD atual já esteja atualizado ou a mesclagem possa ser resolvida como um avanço rápido.
Não é realmente uma simulação, porque haverá uma mesclagem de avanço rápido no caso de não haver conflitos entre os dois ramos. Mas em caso de conflitos, você será informado e nada acontecerá.
Eu tenho sido capaz de usar git merge --abort
, recentemente. No entanto, isso só pode ser usado se houver um conflito de mesclagem. Se você tiver certeza de que não deseja confirmar, use os outros métodos mencionados acima.
git merge --abort
. Você deve revisar sua resposta no futuro, especificando quem escreveu a resposta a que você está se referindo.
Por que não criar um ramo descartável (git checkout -b) e fazer um teste mesclado?
Não sei exatamente se é o seu caso , mas sua pergunta lembra-se de que às vezes inicio um recurso, comprometo-me ao longo dos dias e mesclo o desenvolvimento nele muitas vezes.
Nesse ponto, perco o controle sobre os arquivos exatos que alterei e só o saberei quando meu recurso foi fechado e meu código foi desenvolvido.
Nesse caso, uma boa maneira de saber quais modificações você fez (e não outras das mesclagens) está usando o Sourcetree.
Você deve clicar com o botão direito no ramo base e selecionar Diff Against Current
:
O sourcetree mostrará todas as modificações que serão mescladas se você mesclar sua ramificação na ramificação base.
Obviamente, ele não mostrará os conflitos, mas é uma ferramenta útil nas mesclagens.