¿Cómo volver a sincronizar desde un server a un repository maestro de git?

En primer lugar, debo mencionar … Soy un novato completo para Git, y cómo usarlo. Tan desnudo con mi falta de comprensión aquí.

Por lo tanto, recientemente tuvimos un desarrollador de terceros que estaba haciendo un montón de personalizaciones en nuestro website en breve, básicamente desaparecer de nosotros. Habían estado usando Git. Sin embargo, justo antes de que se desconectaran, me transfirieron el Git Repo. Hasta ese momento, nunca había usado a Git. Debido a limitaciones de time, me encargué de completar la mayoría de los cambios finales necesarios en nuestro website, directamente en el server, tomando copys de security reales en el path. En un momento, traté de sincronizar el server de nuevo a maestro, pero me negaron porque potencialmente podría corregir algunos files. Intenté leer un hilo y, por desgracia, terminé ejecutando un reinicio completo en mi Git. Intenté una restauración, pero eso no parece haber restablecido mi situación de git.

Ahora, quiero tomar TODOS los cambios que se han completado en el SERVIDOR, y comenzar un nuevo Repo maestro de Git. Estoy bien, borrando las twigs que existían anteriormente, pero no tengo idea de cómo vincular el server a un nuevo repository de Git (que acabo de crear en bitbucket), y enviar todo el contenido requerido al nuevo repository. Tengo miedo de equivocarme con estas secuencias, ya que no quiero tener que "empezar de nuevo" (aunque, tengo una copy de security completa de mi server magento 2, tomada hace aproximadamente una hora).

Los repositorys se alojan en Bitbucket si eso hace alguna diferencia.

Tengo una installation local de Sourcetree, pero no tengo idea de cómo usarla correctamente.

En cuanto al repository anterior, no lo borraré, y tengo una copy del repository maestro / origen en mi SourceTree (que probablemente se comprima y luego elimine por completo una vez que lo haya hecho).

Una vez que haya actualizado el maestro, querré implementarlo en otro server de copy de security / server de desarrollo, que anteriormente estaba sincronizado con el viejo git.

cualquier y toda ayuda es apreciada.

¡Es uno de los únicos momentos en los que puedo pensar que tiene sentido usar " git reset --soft "!

En el server esto es lo que haría. Hay una serie de suposiciones aquí:

  1. También podría empujar el repository del contratista a bitbucket usando "cd / ruta / a / repository; git push – mirror [bitbucket-url], y basar el rest de esto en eso.
  2. Asume que tienes copys de security de todo.
  3. Estos pasos también suponen que el layout del directory en el server de producción es idéntico al layout en el repository, además de los directorys que tuvo que mover o agregar o cambiar de nombre.
  4. Finalmente, estos suponen que 'master' es el nombre de la twig bitbucket a la que desea sincronizar.

(Ah, y elija el editor de text sin formatting que prefiera para el paso "editar .gitignore").

Si las suposiciones son válidas, aquí está la secuencia de commands que usaría para sincronizar tu server de producción con tu twig principal:

 cd /path/to/code/on/server touch .gitignore edit .gitignore # set dir and file patterns you want to omit git init # init is safe even if git repo already present git remote add origin [bitbucket-url] git fetch # The "soft" reset! Makes git think your work on the server # directly followed from latest commit on 'master': git reset --soft origin/master git add . # adds all files from all sub-directories git status # do things look reasonable? git diff origin/master # should see all of your work in "patch" format # If everything looks good, do the commit! git commit -m 'sync prod back to bitbucket' # And send your commit to bitbucket! git push origin HEAD:refs/heads/master 

Una advertencia : tenga cuidado con lo que agrega al file .gitignore. Cualquier file o directory que coincida con los patrones en ese file será completamente ignorado por git, y no se sincronizará de nuevo con su repository bitbucket.