Github:マスターにGH-Pagesをミラーリングします
-
24-10-2019 - |
質問
GitHubでホストしているjQueryプラグインを開発しています。デモが含まれています。 gh-pages
, 、私がやりたいことはそれを持っていることです。 master
自動的にプッシュされます gh-pages
, 、または少なくともミラーリングされるセットアップ。
私はすでにこれを見ました 質問 しかし、これらの要件に関する私の質問に本当に答えているかどうかはわかりません。
- 私が使う タワー, 、ソリューションがこのGUIで機能する限り、端末(MAC)を使用して構成を変更することを気にしません。
- 私は、私のマシン上のすべてのものではなく、特定のレポでこの「ミラーリング」だけを望んでいます。
乾杯
解決
git checkout gh-pages
git merge master
git push origin gh-pages
他のヒント
次の2行をに追加します [remote "origin"]
のセクション .git/config
:
push = +refs/heads/master:refs/heads/gh-pages
push = +refs/heads/master:refs/heads/master
あなたが毎回 push
MasterもGH-Pagesに自動的にプッシュします。私はこれを使用しています JQuery Lifestreamプロジェクト.
Denbuzzeが上記で示唆していることをしないでください!!プッシュの +(プラス記号)により、速度ではない更新を静かに受け入れます。私は、これがぶら下がっているコミットにつながることによって仕事を取り消せないほど失うことができるという難しい方法を見つけました。プラスサインを削除するだけで、これはより安全なアプローチになります。
push = refs/heads/master:refs/heads/gh-pages
push = refs/heads/master:refs/heads/master
今、力の更新を引き起こす代わりに、これは警告とプルの提案を引き起こします
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.
さらに説明を追加しています @denbuzze と @mcsdwvl 回答。
両方をプッシュしたい場合 master
と gh-pages
実行するたびに自動的に git push origin
, 、おそらく、レポのgit構成にrefspecを追加する必要があります。
だから、によると git-scmブック, 、2つを追加できます refspecs, 、2つを追加します push
Repo Configファイルへの値 .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
それはaを引き起こします git push origin
に:
- ローカルを押してください
master
リモコンへの分岐master
ブランチ - ローカルを押してください
master
リモコンへの分岐gh-pages
ブランチ
デフォルトで。
ノート: : を使って +
仕様がレポへの押しを強制する前に。注意して使用してください:
RefSpecの形式はオプションです
+
, 、 に続く<src>:<dst>
, 、 どこ<src>
リモート側の参照のパターンであり、<dst>
これらの参照がローカルで記述される場所です。+
gitに、早送りではない場合でも、参照を更新するように指示します。
私は個人的にこれを別名で包むのが好きです:
alias gpogh="git checkout gh-pages && git merge master && git push origin gh-pages && git checkout -"
これはあなたのマスターを反映しています gh-pages
, 、Githubにプッシュしてから、取り組んでいた前のブランチをバックバックします。
または、以下のCMDを使用するだけで、これにより地元のマスターブランチがGH-Pagesマスターブランチにプッシュされます。git push -f origin master:gh-pages
専念 と 押す マスターするために..
それから :
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
アップデート: GitHubを使用すると、必要なブランチとディレクトリからページを公開できるようになりました。
私が使用するのははるかに簡単でした gh-pages
マスターとしてのブランチ。 「マスター」について魔法のようなものはありません。それは単なる別のブランチ名です。そこには は Gh-Pagesについて魔法のようなものです。なぜなら、GitHubがページを提供するためにindex.htmlを探している場所です。
続きを読んでください このトピックに関する私の他の答え.
使用 gh-pages
マスターはサブツリーよりも簡単であるため、ミラーリングよりも簡単です。使用できます git subtree
説明されているように ここ また ここ: :デモを含むディレクトリがある場合、そのディレクトリをにプッシュできます gh-branch
1つのコマンドで。ディレクトリに名前を付けたとしましょう gh-pages
物事を明確にするために。その後、あなたがあなたの変更をコミットしてプッシュした後 master
, 、これを実行してGH-Pagesを更新します。
git subtree push --prefix gh-pages origin gh-pages
問題は、ファイルが入っている場合です gh-pages
その外の他のディレクトリのファイルを参照してください。 Symlinksは機能しませんので、必要です コピー GH-Pagesとして機能するディレクトリ内のファイル。
もし、あんたが 使用する gh-pages
マスターとして, 、この問題は発生しません。