67 votes

Github : Mise en miroir de gh-pages vers master

Je développe un plugin jQuery qui est hébergé sur GitHub. Il contient une démo que je copie manuellement et que je pousse vers la branche. gh-pages ce que j'aimerais faire, c'est que lorsque je pousse un changement vers master il est automatiquement poussé vers gh-pages ou au moins une configuration où ils sont en miroir.

J'ai déjà vu ça. question mais je ne suis pas sûr qu'il réponde vraiment à ma question en ce qui concerne ces exigences :

  1. J'utilise Tour Je n'ai pas peur d'utiliser le terminal (Mac) pour modifier la configuration, tant que la solution fonctionne avec cette interface graphique.
  2. Je ne veux ce "miroir" que sur certains dépôts, pas sur tous les dépôts de ma machine.

Cheers

106voto

denbuzze Points 2760

Ajoutez les 2 lignes suivantes au fichier [remote "origin"] section de .git/config :

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

Chaque fois que vous push il poussera automatiquement master vers gh-pages également. J'utilise ceci pour le Projet jQuery Lifestream .

66voto

Steve Points 2739
git checkout gh-pages
git merge master
git push origin gh-pages

27voto

MCSDWVL Points 121

Ne faites pas ce que Denbuzze suggère ci-dessus. ! ! Le + (signe plus) dans le push lui permet d'accepter discrètement les mises à jour non forward. J'ai découvert à la dure que cela peut causer la perte irrévocable de travail en conduisant à des commits pendants. Le simple fait de supprimer les signes plus rend cette approche plus sûre.

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

Maintenant, au lieu de provoquer une mise à jour forcée, cela provoquera un avertissement et une suggestion de retrait.

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.

2voto

dhulihan Points 3321

Personnellement, je préfère envelopper cela dans un alias :

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

Cela reflète votre maître à gh-pages , pousse vers github, puis retourne à la branche précédente sur laquelle vous travailliez.

2voto

azl Points 17

commettre et pousser au maître..

alors :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X