¿Puedo versionar files de puntos dentro de un proyecto sin fusionar su historial en la línea principal?

Estoy seguro de que este título es bastante oscuro. Me pregunto si hay alguna manera de decir que quieres que un cierto file use diferentes versiones de un file cuando se mueve entre sucursales, pero que en general se ignore desde el repository.

Esta es mi situación: tengo un proyecto de Flash Builder (para una aplicación Flex) que controlo con git. Las aplicaciones Flex en los proyectos de Flash Builder crean tres files: .actionScriptProperties , .flexProperties y .project . Estos files contienen muchas references locales del sistema de files (carpetas de origen, carpetas de salida, etc.), así que, naturalmente, nosotros .gitignore de nuestro repository.

Hoy, quería usar una nueva biblioteca en mi proyecto, así que creé una twig de git llamada lib , eliminé la versión anterior de la biblioteca y puse la nueva. Desafortunadamente, esta información de la biblioteca Flex se almacena en uno de esos tres files de puntos (no estoy seguro de qué manera). Así que cuando tuve que volver a la primera twig ( master ) antes, estaba obteniendo errores de compilation porque el master ahora estaba vinculado a la nueva biblioteca (lo que básicamente negaba por qué hice lib en primer lugar).

Así que me pregunto si hay alguna forma de continuar. Olvidé estos files (para que mis otros desarrolladores no los tengan), pero les digo que quiero que use algún tipo de "versión de twig" local para que pueda localmente usa diferentes versiones de los files para diferentes twigs.

TL; DR

O bien se ignora un file o no se lo hace. Sin embargo, puede enviar files a una twig incluso si se ignoran; solo necesita asegurarse de no volver a cometerlos en la twig incorrecta.

Opciones

  1. Es posible que pueda usar submodules o fusión de subtreees si desea mantener revisiones bajo git, pero en un proyecto separado.
  2. Utilice RCS para versionar un file ignorado por Git. Solo ten cuidado con git-clean; Si destruye sus files *, v , perderá su historial de revisión de RCS.
  3. Mantenga una twig con nada más que sus files personalizados y periódicamente fusione los files ignorados en su tree de trabajo

Opción 3, en detalle

Ignora tus files en la twig principal.

 git checkout master cat << EOF >> .gitignore .actionScriptProperties .flexProperties .project EOF git add .gitignore git commit .gitignore 

Crea una twig vacía para mantener tus files de configuration.

 git symbolic-ref HEAD refs/heads/flexconfig rm .git/index git clean -fdx touch .actionScriptProperties .flexProperties .project git add . git commit 

Combina tus files ignorados en tu twig principal, pero déjalos ignorados.

 git checkout master git merge --no-ff flexconfig 

Si ejecuta el git status en este punto, mostrará un tree de trabajo limpio, pero en realidad tendrá sus files de puntos Flex en su tree de trabajo. Simplemente no use git add . o similar, ya que eso anulará su configuration de .gitignore.