ver usar modificados ignorar descartar como comando cambios archivos git merge push ignore repository

usar - git ver archivos modificados



Git-Ignorar archivos durante la fusiĆ³n (6)

Aquí git-update-index - Registre el contenido del archivo en el árbol de trabajo al índice.

git update-index --assume-unchanged <PATH_OF_THE_FILE>

Ejemplo:-

git update-index --assume-unchanged somelocation/pom.xml

Tengo un repositorio llamado myrepo en el servidor remoto de beanstalk .

Lo cloné a mi máquina local. Creó dos ramas adicionales: staging y dev . Empujó estas ramas a distancia también.

Ahora:

local remote server -------------------------------------------------------- master ==> Pushes to `master` ==> deployed to `prod` staging ==> Pushes to `staging` ==> deployed to `staging` dev ==> Pushes to `dev` ==> deployed to `dev`

Tengo un archivo llamado config.xml que es diferente en cada rama.

Quiero ignorar este archivo solo durante las fusiones. Pero quiero que esto se incluya cuando pago o confirme desde / a la rama de recompra.

La razón por la que quiero esto es que tenemos un script de implementación que extrae (pago) la sucursal específica y se implementa en los servidores respectivos. Por lo tanto, necesitamos el archivo config.xml de esa rama específica en el servidor específico como se indicó anteriormente cuando se implementa.

Supongo que .gitignore no funcionará. ¿Cuáles son las otras opciones? Tenga en cuenta que el archivo ignorado debe ser parte de la verificación y el compromiso, lo que es importante. debe ser ignorado solo durante las fusiones.

¡Gracias!


Podría comenzar usando git merge --no-commit , y luego editar la combinación como desee, es decir, desajustando config.xml o cualquier otro archivo, luego confirme. Sospecho que querría automatizarlo aún más después de usar ganchos, pero creo que valdría la pena hacerlo manualmente al menos una vez.


Podría usar .gitignore para mantener el .gitignore config.xml fuera del repositorio, y luego usar un enlace de confirmación posterior para cargar el archivo config.xml apropiado en el servidor.


Superé este problema usando el comando git merge con la --no-commit y luego eliminé explícitamente el archivo por etapas e ignoré los cambios en el archivo. Por ejemplo, digamos que quiero ignorar cualquier cambio en myfile.txt . myfile.txt siguiente manera:

git merge --no-ff --no-commit <merge-branch> git reset HEAD myfile.txt git checkout -- myfile.txt git commit -m "merged <merge-branch>"

Puede poner las declaraciones 2 y 3 en un bucle for, si tiene una lista de archivos para omitir.


Terminé encontrando los attributes git. Intentándolo. Trabajando hasta ahora. No comprobé todos los escenarios todavía. Pero debería ser la solución.

Combinar estrategias - atributos de Git


.gitattributes : es un archivo de nivel raíz del repositorio que define los atributos para un subdirectorio o subconjunto de archivos.

Puede especificar el atributo para decirle a Git que use diferentes estrategias de fusión para un archivo específico. Aquí, queremos preservar el config.xml existente para nuestra rama. Necesitamos establecer merge=ours en config.xml en el archivo .gitattributes .

merge=ours dice a git que use nuestro archivo (rama actual), si ocurre un conflicto de fusión.

  1. Agregue un archivo .gitattributes en el nivel raíz del repositorio

  2. Puede configurar un atributo para confix.xml en el archivo .gitattributes

    config.xml merge=ours

  3. Y luego definiremos una estrategia de fusión de nuestro ficticio con:

    $ git config --global merge.ours.driver true

Si combina stag form dev branch, en lugar de tener los conflictos de fusión con el archivo config.xml, el archivo config.xml de stag branch se conserva en la versión que tenía originalmente.