tag remove practices crear commits commands best git merge branching-and-merging git-merge

remove - git tag commands



Git no me deja fusionarme (4)

No tengo idea de cómo se cambiaron los permisos de archivos para algunos archivos de la rama principal.

git diff:

diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig old mode 100644 new mode 100755

Yo comprometí los cambios realizados:

git commit --all -m "changes permissions from 644 to 755"

Después de eso, pude fusionar la sucursal como si nada hubiera pasado

git merge Mk

Aunque sé que esta no es la solución más elegante ... ¡Pero me alegra tener mi código de vuelta! Ahora solo tengo que descubrir cómo revertir este cambio de permiso. ¡Gracias por la gran ayuda!

¡Buenas tardes!

Sé que esto es muy habitual y probablemente haya miles de respuestas en Internet, pero no pude encontrar una que fuera completa.

Tengo dos sucursales locales:

  • DOMINAR
  • Mk

Hice muchos cambios en Mk, los comprometí y cambié a MASTER para fusionar estas dos ramas. Pero hubo conflictos. Así que ahora estoy en la rama MASTER, ya no puedo cambiar a Mk, pero necesito anular mi MASTER con Mk.

Sigue diciendo

error: sus cambios locales en los siguientes archivos se sobrescribirán mediante fusión

¿Hay alguna forma de hacer esto?

git mergetool --tool=meld #No files need merging git merge -s theirs Mk #Could not find merge strategy ''theirs''. git merge -X recursive=theirs Mk # error: Your local changes to the following files

sería sobreescrito por fusión

y aún no envié mis cambios a mi repositorio en línea.

Puedo ver la confirmación con todos los cambios pero no puedo acceder a su código.

Acabo de empezar a usar git hace un tiempo pero nunca tuve problemas como ese antes. Realmente agradecería cualquier ayuda que pueda obtener: s


error: sus cambios locales en los siguientes archivos se sobrescribirán mediante fusión

Esto se debe generalmente a que tiene cambios no confirmados que se sobrescribirán. Entonces, primero debe lidiar con eso ya sea (1) cometiendo o (2) ocultando:

git add .; git commit -m "committing my workz" # or git add.; git stash

Ahora intenta la fusión. Quizás tengas conflictos. Desea que todos los cambios de mk tengan prioridad sobre lo que está en el master , porque git es demasiado sensible para detectar conflictos a veces (por ej., No hay conflictos reales), o porque quien se estaba comprometiendo con el master era un tonto:

git checkout master git merge mk # oh noes! merge conflicts # CONFLICT (content): Merge conflict in foo_bar.txt git checkout mk -- foo_bar.txt git commit

¡AUGE! Tornillo master . Tú no eres mi maestro.

Nota: git checkout se usa normalmente para volver a marcar HEAD (y actualizar su directorio de trabajo) en una rama / etiqueta / SHA / lo que sea, pero si lo hace, git checkout SHA -- file no volverá a marcar su HEAD , sino que actualizará el archivo que pasa después de -- para reflejar ese contenido de archivo / ruta en el SHA que pasa. Puede pasar una ruta en lugar de un archivo exacto y se extraerán todos los archivos que son diferentes en esa ruta.


Asegúrese de tener una copia de trabajo limpia de MASTER.

git merge -s recursive -X theirs Mk


Como no existe una estrategia (aunque haya formas de simularla ), no podrías:

  • fusionar el primer maestro a mk: git checkout mk && git merge -s ours master
  • la combinación de mk a master (avance rápido): git checkout master && git merge mk

-s ours estrategia se asegurará de mantener la versión de mk en caso de conflicto.