¿Puedo usar git para administrar un website incluso si otras personas lo actualizan sin usar git?

Entonces digamos que tengo un server web al que puedo acceder a través de ftp. La mayoría de las personas lo actualiza usando Dreamweaver, y actualizo básicamente copyndo y pegando manualmente entre mi computadora y el server. Mi pregunta es, ¿puedo usar git para administrar el sitio (y no tener que copyr / pegar manualmente), mientras que otras personas lo actualizan usando otros methods?

  • No puedo instalar mucho en el server. Me gustaría poner solo files en el server para configurar esto.
  • No quiero tener que copyr y pegar manualmente para upload al server.
  • No quiero deshacer inadvertidamente los cambios de otros que no usan git, ni quiero hacer que usen git.
    • Dicho esto, si tanto yo como otros editamos el website al mismo time, me gustaría aprovechar las capacidades de fusión de git.

¿Cómo debo configurar esto? (Además, ¿qué secuencias de commands podría poner en mi computadora para facilitar esto (tanto anzuelos como no-ganchos)? (Yo sabría cómo hacerlos, solo me gustaría consejos sobre qué tipo de cosas debo hacer para este flujo de trabajo))

Nota: uso linux, si eso importa. (Además, uso git desde la línea de command).

Nota: Estoy bien haciendo algunas cosas manualmente que normalmente no son necesarias (como convertir los cambios de mi compañero de equipo en commits). Es una copy y pegado manual que quiero evitar.

Lo que puede hacer, mientras no instala git en el server, es mantener en su equipo local una copy local del website del server.
Si su server admite sftp, puede usar csync (sin tener que instalarlo en el server): es mejor que rsync y bidireccional.

Luego puede tener su propio repository de git y, cuando quiera agregar o comparar cambios desde el website, puede cambiar de sucursal y hacer:

 git --work-tree=/path/to/csync/folder status . 

Eso compara su índice de deviseio actual y esa carpeta local sincronizada que refleja el website.

Usted tiene dos sucursales en su repo de git, una para su trabajo actual y otra para incorporar el website en el repository.

Puede fusionar los dos localmente, y cuando esté listo, puede realizar el process de compra del repository utilizando la carpeta csync como un tree de trabajo

 git --work-tree=/path/to/csync/folder checkout HEAD -- . 
  1. De alguna manera, configure un método para ejecutar commands git (en su computadora) que afecten al server FTP, así como también poder enviarlo al server FTP (como usar rsync / csync , montar localmente el server ftp , o combinar esto) con algunas copys y pegas iniciales).
  2. En los serveres git repo, establezca updateInstead para updateInstead , a través del command git config receive.denyCurrentBranch "updateInstead" . Ver Push para implementar .
  3. Ahora, cuando presiona desde su repository local el server, si el server ha sido modificado, obtendrá un error como este
     !  Error [remoto rechazado] maestro -> error maestro (el directory de trabajo tiene cambios no registrados): error al presionar algunas references a '../remote'
    

    para resolver esto, debe confirmar los cambios realizados por sus compañeros de equipo en el server remoto. Es posible que desee elegir esto. Luego ve al paso 4.

  4. Si el server local está sincronizado con su twig git, simplemente presione hacia él, también se actualizará el tree de trabajo. (Tenga en count que todavía tiene que hacer cosas como hacer git pull antes de git push y cosas por el estilo).

Uso dos serveres en un website para este propósito. Producción, con solo acceso y desarrollo FTP con acceso completo. Hago un esfuerzo en el server de desarrollo, donde tengo un script posterior a la recepción, que revisa el repository desnudo de la carpeta temporal, y que llama al script de Python, que carga el código al FTP. No sé cómo permitir que otras personas usen FTP. Realmente deberías decirles que usen git, será más fácil para todos, y también tendrás un mejor control del código. Si tiene esta configuration, puede tener solo una twig para enviar al server de producción, y otras solo serán desarrolladas.

No he hecho esto para ver cuán útil sería, pero podría montar el directory remoto usando, por ejemplo, curlftpfs. Espero que esto te brinde algunas alternativas para usarlo:

  1. Tenerlo sin modificaciones, contener solo files de trabajo y tener el repository (es decir, el contenido de .git ) localmente en el directory especificado por la variable de entorno GIT_DIR . core.worktree debe configurarse para el assembly ftp.
  2. Puede tenerlo como un verdadero repository con .git subdirectory .git , do git init etc.
  3. Tener en él un file .git lugar de usar la variable de entorno GIT_DIR .
  4. Haz que sea manejable con git worktree , después de alguna configuration manual ya que actualmente no hay conversión automática de un directory existente a un tree de trabajo.

Mucho depende de si usted es el único usuario de Git o si hay otros que se molestaron con sus cambios privados en el directory ftp.