No está claro cuál es su situación real. La primera pregunta que debe hacerse es si el archivo realmente necesita ser rastreado: los archivos no fusionables a menudo son archivos derivados, como sugiere en los comentarios, y por lo tanto no es necesario (y no debe) rastrearse.
Si realmente necesita hacer un seguimiento, ¿se trata de un archivo binario? Git no intenta combinar archivos binarios; siempre aparecen como conflictos de combinación. Git es bueno para detectar archivos binarios, por lo que en este caso, probablemente estés a salvo. Si no es un archivo binario, entonces aún obligas a Git a manejarlo de manera apropiada. En un archivo de .gitattributes
, añadir algo como:
path/to/file merge=binary
Esto dirigirá a tratarlo como un archivo binario para los propósitos de la fusión. También podría, si quisiera, definir un controlador de combinación personalizado. Utilice merge=my_merge_driver
en el archivo gitattributes, a continuación, en su gitconfig añadir algo como:
[merge "my_merge_driver"]
name = descriptive name
driver = my_script %O %A %B
Los tres argumentos para el guión son la versión ancestro común (O para el original), la versión de la rama actual (A) y la otra rama de versión (% B): son archivos temporales, y se supone que el controlador de fusión realiza la fusión y deja el resultado en% A. Consulte man gitattributes
para obtener más información al respecto.
¿De qué manera es "puro"? ¿Es un archivo derivado, o quizás un archivo binario? – cmbuckley
No pude pensar en otra palabra. Inmergable, tal vez? Sí, para nuestros propósitos, digamos que es un archivo derivado. –
Esto huele mucho a un argumento de 'Necesito bloqueos en Git', aunque redactado de manera diferente. Lo que está pidiendo va en contra del verdadero espíritu de un DVCS. – Perception