¿Puedo versionar archivos de puntos dentro de un proyecto sin fusionar su historial en la línea principal?
Frecuentes
Visto 167 veces
1
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
, .flexProperties
y .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.
1 Respuestas
1
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
- Es posible que pueda usar submódulos o fusiones de subárboles si desea mantener las revisiones en git, pero en un proyecto separado.
- 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.
- 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 git branch gitignore or haz tu propia pregunta.
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 ... - user849425