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.
.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.
Agregue un archivo
.gitattributes
en el nivel raíz del repositorioPuede configurar un atributo para confix.xml en el archivo
.gitattributes
config.xml merge=ours
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.