Soy muy nuevo en git y me pregunté cómo debería realizar una fusión donde en el repositorio local he eliminado varios archivos en la rama maestra, pero estos archivos existen dentro de la rama maestra remota.
Después de hacer git-merge, muestra los conflictos que han ocurrido.
Al usar git gui, muestra que el archivo local se elimina, mientras que el archivo de rama remota tiene contenido.
¿Cómo evita que estos archivos entren en conflicto? ¿Existe una forma sencilla de usar git gui?
Muchas gracias
Respuestas:
Debe resolver los conflictos como mejor le parezca. Si realmente se supone que el archivo debe eliminarse y va a publicar ese cambio en el origen, elimínelo nuevamente:
Si el archivo debe ser rastreado aún, agréguelo (la versión en el árbol de trabajo será la versión de origen):
Después de hacer cualquiera de los dos para resolver el conflicto, realice la fusión.
fuente
cd
al directorio ygit rm *.ext
. Su shell (no Git) se expande*.ext
a todos los nombres de archivo coincidentes.git rm
no tiene-i
bandera.git rm *-suffix.ext
? La misma diferencia. Si tiene problemas para averiguar cómo utilizar los comodines de shell, pregunte en unix.stackexchange.com. Si sabe con certeza que lo que desea no se puede hacer con globbing, userm -i
y siga congit add -u
para recoger las eliminaciones.-s recursive -X ours
, ¿por qué todavía es necesariogit rm
ygit add
?Como un consejo adicional además de la respuesta aceptada, en un "eliminado por nosotros" , si desea ver los cambios que se realizaron en el archivo eliminado para que pueda aplicar esos cambios en otro lugar, puede utilizar:
Si se trata de un escenario "eliminado por ellos" y le gustaría ver los cambios para poder aplicarlos en otro lugar, puede utilizar:
fuente
git diff mybranch@{1}...origin/master -- path/to/file
git diff --base
(vea mi otra respuesta).En Git GUI, selecciona el archivo en conflicto y luego hace clic con el botón derecho en el área de texto principal donde se muestra el texto en conflicto.
En el menú contextual que aparece, puede elegir ir con "Remoto" o ir con "Local". Entonces, si un archivo se elimina de forma remota, puede elegir "Remoto" para propagar la eliminación localmente y viceversa.
Me tomó un mes resolverlo ... sería bueno si Git GUI realmente tuviera documentación ...
fuente
La respuesta mejor valorada se centra en la forma de resolver el conflicto.
Antes de eso, probablemente desee saber qué cambió el control remoto en los archivos eliminados localmente.
Para hacer eso, puede ver los cambios con:
De https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--1--base
fuente
git diff --base
stackoverflow.com/a/60484874/470749En EGit también encontré problemas. Mi solucion fue:
fuente
Como se indica en esta útil respuesta a una pregunta relacionada , puede usar
git mergetool
para iniciar un diálogo donde puede seleccionar si desea tomar la versión modificada o eliminada de los archivos.fuente