Question

Je développe un plugin jQuery qui est en cours d'hébergement sur GitHub. Il a une démo inclus dont je copie manuellement et pousser à la gh-pages branche, ce que je voudrais faire est d'avoir ainsi quand je pousse un changement à master il est poussé automatiquement à gh-pages, ou au moins une configuration où ils sont en miroir.

Je l'ai déjà vu cette question mais ne savez pas si elle répond vraiment à ma question en ce qui concerne les exigences suivantes:

  1. J'utilise tour , je ne me dérange pas en utilisant le terminal (Mac) pour apporter des modifications de config, tant que les travaux de solution avec cette interface graphique.
  2. Je veux que ce « miroir » sur certaines prises en pension, pas tous sur ma machine.

Vive

Était-ce utile?

La solution

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

Autres conseils

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

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

Chaque fois que vous push il sera automatiquement pousser maître gh-pages ainsi. J'utilise cela pour le projet jQuery Lifestream .

Ne pas faire ce que suggère denbuzze ci-dessus !! Le signe plus (+) dans la poussée, il est tranquillement accepter les mises à jour non-fastforward. J'ai découvert la dure que cela peut causer irrévocablement le travail à perdre en menant à commits ballants. supprimant simplement les signes plus rend cette approche plus sûre.

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

au lieu de faire une mise à jour de force cela entraînera une suggestion d'avertissement et traction

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.

J'ajoute des explications supplémentaires à @denbuzze et @ réponses de MCSDWVL.

Si vous voulez pousser les deux à master et gh-pages automatiquement à chaque fois que vous exécutez git push origin, vous voulez probablement ajouter un Refspec à la configuration de votre repo git.

Ainsi, selon le git-scm livre , vous pouvez ajouter deux RefSpecs , en ajoutant deux valeurs push dans le fichier de configuration 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

Cela provoquera une git push origin à:

  1. Appuyez sur la branche master locale à la branche master à distance
  2. Appuyez sur la branche master locale à la branche gh-pages à distance

par défaut.

Remarque : l'aide d'un + avant les causes spécifications de pousser de force à la prise en pension. Utilisez-le avec précaution:

Le format du refspec est une option +, suivie <src>:<dst>, où <src> est le modèle des références du côté opposé et <dst> est l'endroit où les références sont écrites localement. Le + dit Git de mettre à jour la référence même si elle n'est pas une avance rapide.

Personnellement, je aime à envelopper ceci dans un alias:

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

Ce miroir à votre maître gh-pages, pousse à github, puis Repasse la branche précédente que vous travaillez.

ou vous pouvez simplement utiliser le cmd ci-dessous, cela va pousser votre branche maître local branche maître gh-pages. git push -f origin master:gh-pages

commit et poussée à maîtriser ..

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

UPDATE: GitHub now allows pages to be published from any branch and directory you want.


It was much easier for me to use the gh-pages branch as master. There's nothing magical about "master"; it's just another branch name. There is something magical about gh-pages, because that's where GitHub is looking for index.html to serve your page.

Read more in my other answer on this topic.

Using gh-pages as master is also easier than subtrees, which are easier than mirroring. You could use git subtree as described here or here: if you have a directory which contains your demo, you can push that directory to the gh-branch with one command. Let's say you name the directory gh-pages to make things clear. Then after you've committed and pushed your changes to master, run this to update gh-pages:

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

The problem is if your files in gh-pages refer to files in other directories outside it. Symlinks don't work, so you'll have to copy files in the directory that serves as gh-pages.

If you use gh-pages as master, this problem won't occur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top