mejor opción
Probablemente el más limpio, menos confuso, y la forma más segura de empujar en su repositorio remoto no desnuda, es presionar a las ramas dedicadas en el mando a distancia que representan sus ramas portátiles.
Veamos el caso más simple, y supongamos que tiene una sola rama en cada repositorio: maestro. Cuando presiona hacia el repositorio remoto desde su computadora portátil, en lugar de presionar master -> master, presione master -> laptop-master (o un nombre similar). De esta forma, la inserción no afecta a la rama maestra que está actualmente desprotegida en el repositorio remoto. Para hacerlo desde el ordenador portátil, el comando es bastante simple:
git push origin master:laptop-master
Esto significa que la rama local master será empujado a la rama llamada "portátil-master" en el repositorio remoto. En su repositorio remoto, tendrá una nueva rama llamada "laptop-master" que luego podrá fusionar en su maestro remoto cuando esté listo.
opción alternativa
También es posible simplemente empuje principal -> maestro, pero empujando a la rama actualmente desprotegido de un acuerdo de recompra no desnuda no es recomendable, ya que puede ser confuso si no entiendo lo que está pasando. Esto se debe a que presionar en una rama desprotegida no actualiza el árbol de trabajo, por lo que al marcar git status
en la rama extraída que se insertó se mostrarán exactamente las diferencias opuestas a las que se presionaron más recientemente. Sería especialmente confuso si el árbol de trabajo estuviera sucio antes de que se realizara el empuje, que es una gran razón por la cual no se recomienda.
Si quieres probar simplemente empujando maestro -> maestro, a continuación, el comando es simplemente:
git push origin
Pero cuando vuelva al repositorio remoto, lo más probable quieren hacer un git reset --hard HEAD
a conseguir que el árbol de trabajo esté sincronizado con el contenido que se envió. Esto puede ser peligroso, porque si hay no confirmado cambios en el árbol de trabajo remoto que desea mantener, los borrará. ¡Asegúrese de saber cuáles son las consecuencias de esto antes de probarlo, o al menos hacer primero una copia de seguridad!
EDIT Desde Git 2.3, puede utilizar "push-to-deploy" git push: https://github.com/blog/1957-git-2-3-has-been-released. Pero empujar a una rama separada y luego fusionar suele ser mejor, ya que realiza una fusión real (por lo tanto, funciona con cambios no confirmados como lo hace merge).
relacionados: http://stackoverflow.com/questions/12265729/git-config-receive-denycurrentbranch – prusswan
tienen 2 repos remotos, uno desnudo y uno normal, y usan ganchos. parece una molestia, pero de acuerdo con [git ready] (http://gitready.com/advanced/2009/02/01/push-to-only-bare-repositories.html) y [la wiki oficial de git] (https : //git.wiki.kernel.org/index.php? title = Git_FAQ & oldid = 23811 # Why_won.27t_I_see_changes_in_the_remote_repo_after_.22git_push.22.3F), deberías ** presionar solo a un repositorio simple **. esta es probablemente la razón por la que la mayoría de los hosts git repo (por ejemplo, GitHub, Bitbucket) incluyen los ganchos post-recepción, por lo que puede enviar a un URL en su servidor que ejecute un script que ejecute, por ejemplo, 'git pull github master'. –