¿Hay alguna forma de simular una git merge
entre dos ramas, la rama de trabajo actual y la maestra, pero sin hacer ningún cambio?
A menudo tengo conflictos cuando tengo que hacer un git merge
. ¿Hay alguna forma de simular la fusión primero?
¿Hay alguna forma de simular una git merge
entre dos ramas, la rama de trabajo actual y la maestra, pero sin hacer ningún cambio?
A menudo tengo conflictos cuando tengo que hacer un git merge
. ¿Hay alguna forma de simular la fusión primero?
Respuestas:
No creo que haya una forma de simular lo que sucederá hasta que intentes la fusión. Sin embargo, si se asegura de que la salida de git status
esté vacía antes de hacer la fusión, es bastante seguro seguir adelante e intentarlo. Si tiene conflictos, puede volver inmediatamente al estado en el que se encontraba antes con:
git reset --merge
Desde git 1.7.4, también puede abortar la fusión haciendo:
git merge --abort
(Como explica el mensaje de confirmación que agregó esa opción , esto se agregó para mantener la coherencia, git rebase --abort
etc.)
--no-commit
es mucho más fácil en mi opinión
--no-commit
todavía estás cambiando el índice y el árbol de trabajo, que no es exactamente "sin hacer ningún cambio" :) Mi punto es que cuando la gente pregunta este tipo de pregunta, generalmente es porque no son conscientes de que la mejor manera de ver cómo funcionaría una fusión es simplemente intentar la fusión , a menudo porque no son conscientes de lo fácil que es volver al estado en el que se encontraban antes si resultó haber problemas.
git merge --abort
es equivalente a git reset --merge
cuándo MERGE_HEAD
está presente", así que lo que sea más fácil de recordar :)
Puede usar git merge --no-commit
para evitar que la fusión se confirme realmente, y si no le gusta cómo funciona la fusión, simplemente restablezca el encabezado original.
Si definitivamente no desea finalizar la fusión, incluso si es un avance rápido (y por lo tanto no tiene conflictos, por definición), también puede agregar --no-ff
.
git merge --abort
exista, ¿tal vez quieres decir git reset --merge
?
rebase
que no existe una --abort
para git merge
.
--no-ff
. Para evitar que se produzca una fusión ff.
--no-ff
es bastante obligatorio aquí, ya --no-commit
que no detiene los cambios de avance rápido.
Si quiero comparar los cambios en una rama de tema para dominar, me parece más fácil y seguro hacer lo siguiente:
git checkout master
git checkout -b trial_merge
git merge topic_branch
Después de completar la fusión, es fácil ver el cambio consolidado de maestro
git diff master
Cuando termine, simplemente elimine la rama trial_merge
git checkout master
git branch -D trial_merge
De esta manera, la rama maestra nunca cambia.
git checkout --detach
y probar lo que quieras. Más tarde, si desea conservar sus cambios, hágalo git checkout -b new_branch
. Y si desea tirar sus cambios, verifique cualquier rama que desee ( git checkout master
).
topic_branch
es enorme (como probablemente sea el caso si está en esta pregunta en primer lugar), el diff master
resultado es probablemente demasiado grande para que pueda mirarlo si una fusión va a causar conflictos.
Yo suelo :
git merge --ff-only
de acuerdo con la documentación :
Negarse a fusionarse y salir con un estado distinto de cero a menos que el HEAD actual ya esté actualizado o la fusión se pueda resolver como un avance rápido.
No es realmente una simulación porque habrá una fusión de avance rápido en caso de que no haya conflictos entre las dos ramas. Pero en caso de conflictos, se le informará y no pasará nada.
He podido usar git merge --abort
, recientemente. Sin embargo, esto solo se puede usar si hay un conflicto de fusión. Si está seguro de que no desea comprometerse, utilice los otros métodos mencionados anteriormente.
git merge --abort
. Debería comprobar su respuesta en el futuro especificando quién escribió la respuesta a la que se refiere.
¿Por qué no simplemente crear una rama desechable (git checkout -b) y hacer una fusión de prueba allí?
No sé exactamente si es tu caso , pero tu pregunta recuerda que a veces comienzo una función, me comprometo a lo largo de los días y combino el desarrollo muchas veces.
En este punto, pierdo el control sobre los archivos exactos que cambié y solo lo sabré cuando se cerró mi función y mi código se desarrolló.
En este caso, una buena manera de saber qué modificaciones realizó (no otras de las fusiones) es usar Sourcetree.
Debe hacer clic con el botón derecho en la rama base y seleccionar Diff Against Current
:
Luego, sourcetree le mostrará todas las modificaciones que se fusionarán si fusiona su rama en la rama base.
Por supuesto, no le mostrará los conflictos, pero es una herramienta útil en las fusiones.