¿Cuál es la mejor manera de clonar un proyecto GIT en una aplicación web con files existentes y no GIT?

¿Quieres ir a la caza? Pase a las PREGUNTAS a continuación. Aclamaciones.

FONDO

  • Estoy cambiando mi flujo de trabajo de desarrollo web para include GIT para el control de versiones. GIT es nuevo para mí, aunque tengo experiencia técnica, así que no es un completo misterio. 🙂
  • Tengo un repository GIT en Bitbucket ( BB ), que utilizo como contenedor central del proyecto.
  • Uso mi server web local (en Mac OS X) para el desarrollo. Ese es mi server de desarrollo.
  • Una vez probado localmente, envío los cambios de mi server de desarrollo a Bitbucket.
  • Tengo dos serveres remotos. Uno es un server intermedio, el otro es el server productor / vivo.
  • Aprendí (lo suficiente, por ahora) cómo administrar los files entre dev y Bitbucket. Tengo todo configurado para ejecutar SSH sin contraseña (usando las teclas rsa).

LA CUESTIÓN

No estoy seguro de cuál es la forma adecuada o recomendada de administrar el flujo de trabajo entre BitBucket (o el sistema que uno usa) y el server de transición y el server de producción.

Aquí hay un ejemplo:

Estoy trabajando en un sitio con la siguiente estructura (en parte): (aquellos con ++ a su alnetworkingedor son las carpetas I con files que debo rastrear / administrar en GIT) – www_root/images/...

  • www_root/etc/...

  • www_root/extras/themes/...

  • www_root/extras/plugins/...

  • ++ www_root/extras/plugins/my-plugin-1 ++

  • ++ www_root/extras/plugins/my-plugin-2 ++
  • ++ www_root/extras/themes/my-theme-1 ++
  • www_root/extras/theme/someothertheme

El enfoque que tomé en mi server de desarrollo (localhost) fue tener un repository para todo el www_root/ y un gitignore que excluye todo, excepto aquellas carpetas con ++ al lado (en el ejemplo anterior), Y sus padres. Entonces, en este caso, las ../plugins/.. y ../themes/.. están incluidas en su totalidad.

Cuando llega el momento de configurar el server de transición, aquí es donde me despegó. Lo que hice fue instalar la aplicación allí (WordPress, en mi caso). Pero luego no puedo agregar el proyecto GIT porque me encuentro con el problema de que git init aborta debido a que la carpeta no está vacía.

Como mencioné, en mi server local configuré la raíz del sitio como la raíz de mi proyecto, y con gitignore todos los files excepto las diversas carpetas en las que estoy trabajando.

LO QUE TRATÉ

Intenté configurar una carpeta project.git encima de web_root y luego agregué un tree de trabajo para la carpeta /extras/ en la raíz web. Me encontré con problemas. No se pudo git init (problema de carpetas no vacías) y no se pudo git pull , git fetch , etc.

También intenté crear un proyecto GIT dentro de www_root, y con el tree de trabajo siendo la carpeta /extras/ , pero de nuevo, pulsé el problema de la carpeta no vacía.

PREGUNTAS

1) ¿Existe alguna forma de incorporar un proyecto GIT y de extraer los files de Bitbucket / Github en una estructura de carpetas existente (como la que existiría en cualquier situación en la que se desarrollen componentes de una aplicación más grande, con su versión más amplia)? estructura de carpetas)?

2) O, ¿es necesario tener una carpeta completamente vacía /wp-content/themes/ (en mi ejemplo) en el server de preparación y producción, y administrar todo el contenido a través de GIT, y luego GIT INIT y GIT CLONE en ese carpeta, y luego tener un proyecto separado para /wp-content/plugins/ donde todo el contenido de esa carpeta se maneja a través de GIT, etc., y hacer lo mismo para eso?

3) O, ¿es el mejor enfoque tener proyectos separados para cada subcarpeta? Hipotéticamente, www_root/extras/themes/my-theme-1 y, digamos, www_root/extras/themes/my-theme-2 , y quizás www_root/extras/plugins/my-plugin-1

4) ¿O he pasado por alto completamente otra forma de abordar esto?

Si esta es una opción, ¿puede crear una nueva carpeta, crear un repository de GIT y luego mover los files al repository?

Luego lo usual: en caso de incendio:

  • git commit
  • git push
  • salir del edificio