¿Puedo versionar archivos 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 forma de entrar. git para decirle que desea que un determinado archivo use diferentes versiones de un archivo cuando se mueve entre ramas, pero que en general sea .git ignorado del repositorio.

Este es mi escenario: tengo un proyecto Flash Builder (para una aplicación Flex) que controlo con git. Las aplicaciones Flex en los proyectos de Flash Builder crean tres archivos: .actionScriptProperties, .flexPropertiesy .project. Estos archivos contienen muchas referencias del sistema de archivos local (carpetas de origen, carpetas de salida, etc.), por lo que, naturalmente, los .git ignoramos de nuestro repositorio.

Hoy, quería usar una nueva biblioteca en mi proyecto, así que hice una rama de git separada llamada lib, eliminó la versión anterior de la biblioteca y colocó la nueva. Desafortunadamente, esta información de la biblioteca Flex se almacena en uno de esos tres archivos de puntos (no estoy seguro de cuál). Así que cuando tuve que volver a cambiar a la primera rama (master) anteriormente, estaba recibiendo errores de compilación porque master ahora estaba vinculado a la nueva biblioteca (que básicamente negaba por qué hice lib en primer lugar).

Así que me pregunto si hay alguna forma de que yo continúe ignorando estos archivos .git (para que mis otros desarrolladores no los obtengan), pero dígale a git que quiero que use algún tipo de "versión de rama" local para poder use localmente diferentes versiones de los archivos para diferentes ramas.

preguntado el 12 de junio de 12 a las 22:06

Para que su pregunta sea más fácil de seguir, intente referirse a sus diferentes sucursales usando un nombre. Por ejemplo Branch 1, Branch 2, etc ... -

1 Respuestas

TL; DR

O se ignora un archivo o no. Sin embargo, puede enviar archivos a una rama incluso si se ignoran; solo necesita asegurarse de no volver a cometerlos en la rama incorrecta.

de pago

  1. Es posible que pueda usar submódulos o fusiones de subárboles si desea mantener las revisiones en git, pero en un proyecto separado.
  2. Use RCS para versionar un archivo ignorado por Git. Solo ten cuidado con git-clean; si vuelas tu *,v archivos, perderá su historial de revisión de RCS.
  3. Mantenga una rama con nada más que sus archivos personalizados y fusione periódicamente los archivos ignorados en su árbol de trabajo

Opción 3, en detalle

Ignore sus archivos en la rama principal.

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

Cree una rama vacía para guardar sus archivos de configuración.

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

Combine sus archivos ignorados en su rama maestra, pero déjelos ignorados.

git checkout master
git merge --no-ff flexconfig

Si tu corres git status en este punto, mostrará un árbol de trabajo limpio, pero en realidad tendrá sus archivos de puntos Flex en su árbol de trabajo. Simplemente no uses git add . o similar, ya que anulará la configuración de .gitignore.

Respondido el 12 de junio de 12 a las 23:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.