Pregunta ¿Cómo resuelvo que git diga "Confirme sus cambios o los esconda antes de que pueda fusionar"?


Hice algunas actualizaciones en mi máquina local, las llevé a un repositorio remoto, y ahora estoy tratando de llevar los cambios al servidor y recibo el mensaje;

error: Your local changes to the following files would be overwritten by merge:
wp-content/w3tc-config/master.php
Please, commit your changes or stash them before you can merge.

Entonces corrí git checkout -- wp-content/w3tc-config/master.php e intenté de nuevo y recibí el mismo mensaje. Supongo que w3tc cambió algo en el archivo de configuración en el servidor. No me importa si la copia local o remota va al servidor (supongo que la remota es la mejor), solo quiero combinar el resto de mis cambios (actualizaciones de complementos).

¿Algunas ideas?


508
2018-04-01 14:11


origen


Respuestas:


No puede fusionarse con modificaciones locales. Git lo protege de perder cambios potencialmente importantes.

Tienes tres opciones:

  • Cometa el cambio usando

    git commit -m "My message"
    
  • Stash it.

    El apilamiento actúa como una pila, donde puede empujar los cambios y los abre en orden inverso.

    Para esconder, escriba

    git stash
    

    Haz la fusión y luego extrae el alijo:

    git stash pop
    
  • Descartar los cambios locales

    utilizando git reset --hard
    o git checkout -t -f remote/branch

    O bien: descartar cambios locales para un archivo específico

    utilizando git checkout filename


904
2018-04-01 14:34



git stash
git pull <remote name> <remote branch name> (or) switch branch
git stash apply --index

El primer comando almacena sus cambios temporalmente en El escondite y los elimina del directorio de trabajo.

El segundo comando cambia de ramas.

El tercer comando restaura los cambios que ha almacenado en el alijo (el --index la opción es útil para asegurarse de que los archivos en etapas todavía estén en etapas).


51
2018-06-04 06:58



Puede probar uno de los siguientes métodos:

rebase

Para cambios simples, intente hacer una nueva referencia en la parte superior mientras realiza los cambios, p.

git pull origin master -r

Entonces aplicará su rama actual en la parte superior de la rama ascendente después de ir a buscar.

Esto es equivalente a: checkout master, fetch y rebase origin/master git comandos.

Este es un modo de operación potencialmente peligroso. Reescribe la historia, lo que no augura nada cuando ya publicaste ese historial. No use esta opción a menos que haya leído git-rebase(1) cuidadosamente.


revisa

Si no le importan los cambios locales, puede cambiar a otra rama temporal (con fuerza) y volver a cambiarla, p.

git checkout origin/master -f
git checkout master -f

Reiniciar

Si no le importan sus cambios locales, intente restablecerlo a HEAD (estado original), p.

git reset HEAD --hard

Si lo anterior no ayuda, puede haber reglas en su archivo de normalización de git (.gitattributes) así que es mejor comprometer lo que dice. O su sistema de archivos no admite permisos, por lo que debe desactivar filemode en tu configuración de git.

Relacionado: ¿Cómo forzo a "git pull" a sobrescribir los archivos locales?


17
2017-07-24 11:55



Entonces la situación con la que me encontré fue la siguiente:

error: los cambios locales en los siguientes archivos se sobrescribirán mediante la fusión:   wp-content / w3tc-config / master.php   Por favor, comprometa sus cambios o guárdelos antes de que pueda fusionarse.

excepto, justo antes de eso, era remoto: así que en realidad esto:

remote: error: los cambios locales en los siguientes archivos se sobrescribirán mediante la fusión:   some / file.ext   Por favor, comprometa sus cambios o guárdelos antes de que pueda fusionarse.

Lo que sucedía era (creo, no 100% positivo) que el gancho de recepción de git post comenzaba a funcionar y a enredarse debido a los cambios de movimiento en el repositorio del servidor remoto, que en teoría no debería haber sido tocado.

Entonces, lo que terminé haciendo al buscar en el gancho post-recepción y encontrar esto, fue tener que ir al repositorio remoto en el servidor, y allí estaba el cambio (que no estaba en mi repositorio local, que, de hecho, dijo que coincidía, sin cambios, sin compromiso, actualizado, etc.) Así que mientras estaba en el local, no hubo cambios, en el servidor, luego hice un git checkout -- some/file.ext y luego los repositorios locales y remotos realmente coincidieron y pude continuar trabajando e implementando. No estoy del todo seguro de cómo ocurrió esta situación, aunque un par de docenas de desarrolladores más cambios de TI pueden tener algo que ver con eso.


10
2017-11-17 22:02



Prueba esto

git stash save ""

y prueba tirar de nuevo


5
2018-01-25 08:20



En mi caso, hice una copia de seguridad y luego borré el archivo del que se quejaba Git, comprometido, luego pude verificar otra rama.

Luego reemplacé el archivo, copié de nuevo en el contenido y continué como si nada hubiera pasado.


0
2018-03-26 06:29



Pedir confirmación antes de tirar

  • git escondite
  • git pull origen << nombre de rama >>

Si es necesario :

  • git esconderse

0
2017-08-01 04:26



Si está seguro de que no necesita los cambios locales en el futuro, puede seguir adelante y realizar estos comandos:

git reset --hard 
git pull

-2
2017-12-14 17:52