Pregunta

Estoy desarrollando un complemento jQuery que está alojando en GitHub. Tiene una demostración incluida de la cual estoy copiando y empujando manualmente a la rama. gh-pages, lo que me gustaría hacer es tenerlo para que cuando empuje un cambio a master se presiona automáticamente a gh-pages, o al menos una configuración donde se reflejan.

Ya he visto esto pregunta Pero no estoy seguro si realmente responde a mi pregunta con respecto a estos requisitos:

  1. yo suelo Torre, No me importa usar el terminal (Mac) para hacer cambios en la configuración, siempre que la solución funcione con esta GUI.
  2. Solo quiero este 'reflejo' en ciertos reposos, no en todos ellos en mi máquina.

Salud

¿Fue útil?

Solución

git checkout gh-pages
git merge master
git push origin gh-pages

Otros consejos

Agregue las siguientes 2 líneas al [remote "origin"] Sección de .git/config:

push = +refs/heads/master:refs/heads/gh-pages
push = +refs/heads/master:refs/heads/master

Cada vez que usted push También empujará automáticamente el maestro a las páginas de GH. Estoy usando esto para el proyecto jQuery LifeSteam.

No hagas lo que sugiere Denbuzze arriba¡! El + (signo más) en el empuje hace que acepte en silencio actualizaciones no rápidas. Descubrí la manera difícil de que esto puede causar irrevocablemente el trabajo que se pierde al conducir a los compromisos colgantes. Simplemente eliminar los signos positivos hace que este sea un enfoque más seguro.

push = refs/heads/master:refs/heads/gh-pages
push = refs/heads/master:refs/heads/master

Ahora, en lugar de causar una actualización de la fuerza, esto causará una sugerencia de advertencia y extracción

To https://github.com/someuser/repo.git
 ! [rejected]        master -> gh-pages (fetch first)
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/someuser/repo.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Estoy agregando más explicación a @Denbuzze y @MCSDWVL respuestas.

Si quieres empujar ambos a master y gh-pages automáticamente cada vez que ejecutas git push origin, probablemente desee agregar un refspec a la configuración git de su repositorio.

Entonces, según el libro de git-scm, puedes agregar dos Refspecs, agregando dos push valores para el archivo de configuración de repo .git/config:

[remote "origin"]
url = https://github.com/<github_user>/<repo_name>
      fetch = +refs/heads/*:refs/remotes/origin/*
      push = refs/heads/master:refs/heads/master
      push = refs/heads/master:refs/heads/gh-pages

Que causará un git push origin a:

  1. Empujar al local master rama al control remoto master rama
  2. Empujar al local master rama al control remoto gh-pages rama

por defecto.

Nota: usando un + Antes de que la especificación hace que el empuje hacia el repositorio. Úselo con precaución:

El formato del RefSpec es opcional +, seguido por <src>:<dst>, dónde <src> es el patrón de referencias en el lado remoto y <dst> es donde esas referencias se escribirán localmente. los + le dice a Git que actualice la referencia incluso si no es un avance rápido.

Personalmente me gusta envolver esto en un alias:

alias gpogh="git checkout gh-pages && git merge master && git push origin gh-pages && git checkout -"

Esto refleja a tu maestro para gh-pages, empuja a Github, luego vuelve a cambiar la rama anterior en la que estaba trabajando.

O simplemente puede usar el CMD a continuación, esto empujará su rama maestra local a la rama maestra de las páginas GH.git push -f origin master:gh-pages

comprometerse y empujar para dominar..

después :

git checkout gh-pages  // -> go to gh-pages branch
git rebase master // bring gh-pages up to date with master
git push origin gh-pages // commit the changes
git checkout master // return to the master branch

ACTUALIZAR: GitHub ahora permite que las páginas se publiquen desde cualquier rama y directorio que desee.


Fue mucho más fácil para mí usar el gh-pages rama como maestro. No hay nada mágico en "maestro"; Es solo otro nombre de rama. Ahí es Algo mágico sobre las páginas de GH, porque ahí es donde GitHub está buscando index.html para servir a su página.

Leer más en Mi otra respuesta sobre este tema.

Usando gh-pages Como el maestro también es más fácil que los subárboles, que son más fáciles que la reflejo. Podrías usar git subtree como se describe aquí o aquí: Si tiene un directorio que contiene su demostración, puede llevar ese directorio al gh-branch con un comando. Digamos que nombra el directorio gh-pages para aclarar las cosas. Luego, después de haber cometido y empujado sus cambios a master, ejecute esto para actualizar las páginas GH:

git subtree push --prefix gh-pages origin gh-pages

El problema es si sus archivos gh-pages Consulte los archivos en otros directorios fuera de él. Los enlaces simbólicos no funcionan, por lo que tendrás que Copiar Archivos en el directorio que sirven como páginas GH.

Si usted usar gh-pages como maestro, este problema no ocurrirá.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top