master
という名前のブランチにフォルダーがあります。public/
その内容を別のブランチのルート ディレクトリにコピーする最も簡単な方法は何gh-pages
ですか?
3 に答える
Blind Gaenger (Bernd Jünger)による サブモジュール内の GitHub ページの生成で説明されている 1 つの非常に優れたトリックは、ブランチを別のブランチのサブモジュールとして宣言することです!
したがって、public
コンテンツが独自の孤立ブランチにある場合 (gh-pages
コンテンツは通常、独自の孤立ブランチに保持されるように)、次のことができます。
- ブランチ
public
でメインリポジトリのサブモジュールとして宣言しますmaster
- メインリポジトリのサブモジュールと同じパブリックを宣言します
gh-pages
したがって、ブランチpublic
にいるときにサブモジュールで行った変更は、ブランチに切り替えるmaster
と更新 ( ) できます!git submodule update
gh-pages
これが現在のセットアップの解決策であると言っているわけではありませんpublic
。メイン コンテンツから削除して、独自のブランチに追加し直す必要があるためです (つまり、他の解決策の方が簡単かもしれません)。共有する興味深い方法です。共通ディレクトリ:
cd yourRepo
git symbolic-ref HEAD refs/heads/public
rm .git/index
mv public ..
git clean -fdx
mv ../public/* .
git add .
git commit -m "public content in orphan branch public"
git push origin public
しかし、その ( ) コンテンツを含める孤立ブランチを作成したら、public
そのブランチ コンテンツを他のブランチのサブモジュールとして追加する秘訣は次のとおりです。
$ git checkout master
$ git submodule add -b public git@github.com:user/repo.git public
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: .gitmodules
# new file: public
#
$ git commit -m "added public as submodule"
$ git push
gh-pages
そして、ブランチに対してそのステップを繰り返すことができます。
これによりディレクトリ " public
" が作成され、チェックアウト時master
またはgh-pages
.
どちらの場合も (両方のチェックアウト)、サブモジュールgit submodule update
で行われた最新の進化を取り戻すには a で十分です。
サブモジュールに関してはいつものように、ディレクトリで変更を行ったら、その ' ' ブランチにいることを確認し、コミットしてプッシュし、1 つ上のディレクトリに戻って、再度追加コミットします。public
public
public
2016 年 8 月の更新:よりシンプルな GitHub ページの公開により、ページ ファイルを同じブランチのサブフォルダーに保持できるようになりました(これ以上gh-pages
は必要ありません)。
そのため、サブモジュールのトリックは、同じブランチから両方のタイプのコンテンツを表示できるようにする必要がなくなりました。
cp -r public/* ./
git add .
git stash
git checkout gh-pages
git stash apply