Uso rsync para sincronizar los contenidos de mi máquina local con el servidor, y si solo está implementando en un servidor, entonces es bastante simple (y Capistrano es excesivo). Pongo los siguientes alias en ~/.bash_profile
:
alias eget='rsync -avie ssh [email protected]:sites/example.com/www/ ~/Projects/example/example.com/www/ --exclude .DS_Store --exclude ".git*" --delete-after'
alias edep='rsync -avuie ssh ~/Projects/example/example.com/www/ [email protected]:sites/example.com/www/ --exclude .DS_Store --exclude ".git*" --delay-updates --delete-after'
Entonces, desde el repositorio git en mi máquina local. Yo:
git commit -am 'commit some changes'
git pull --rebase # pull any new changes from remote (--rebase prevents an unnecessary merge commit.)
eget -n # confirm which files I've changed
Si se parece a pescado, lo que podía hacer sin el eget
-n y luego simplemente hacer un git diff -w
. Entonces, podría hacer git checkout -- path/to/file
para los archivos para los cuales quiero guardar mis cambios. Luego, confirmo los cambios que estaban en el servidor que aún no recibí. Esto solo ocurrirá si los archivos en el servidor cambian de forma diferente a las implementaciones. De lo contrario, sabrá que su versión local siempre está más actualizada que los archivos en el servidor y, por lo tanto, no tiene que preocuparse por sobrescribir cosas en el servidor que aún no tiene en su servidor local. Continuar ...
edep -n # just see what files will be deployed/updated/etc.
edep # looks good. Deploy for real.
¡Hecho!
Consulte la rsync(1) Mac OS X Manual Page para obtener más información.
Otra opción es usar el Git post-receive hook. Pero, tendrás que instalar Git en el servidor para hacer eso. Además, le recomiendo colocar el directorio .git
fuera de su directorio público www
por motivos de seguridad &. Puede hacerlo con la opción de configuración Git core.worktree
. Por ejemplo, desde ~/git/example.com.git
, haga git init --bare; git config core.worktree ~/sites/example.com/
. Eso hace ~/git/example.com.git
como el .git
dir para ~/sites/example.com/
.
echa un vistazo a http://stackoverflow.com/questions/279169/deploy-php-using-git – philfreo
o Capistrano http://help.github.com/capistrano/ – philfreo