7

masterという名前のブランチにフォルダーがあります。public/その内容を別のブランチのルート ディレクトリにコピーする最も簡単な方法は何gh-pagesですか?

4

3 に答える 3

5

Blind Gaenger (Bernd Jünger)による サブモジュール内の GitHub ページの生成で説明されている 1 つの非常に優れたトリックは、ブランチを別のブランチのサブモジュールとして宣言することです!

したがって、publicコンテンツが独自の孤立ブランチにある場合 (gh-pagesコンテンツは通常、独自の孤立ブランチに保持されるように)、次のことができます。

  • ブランチpublicでメインリポジトリのサブモジュールとして宣言しますmaster
  • メインリポジトリのサブモジュールと同じパブリックを宣言しますgh-pages

したがって、ブランチpublicにいるときにサブモジュールで行った変更は、ブランチに切り替えるmasterと更新 ( ) できます!git submodule updategh-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
publicpublic


2016 年 8 月の更新:よりシンプルな GitHub ページの公開により、ページ ファイルを同じブランチのサブフォルダーに保持できるようになりました(これ以上gh-pagesは必要ありません)。

これで、リポジトリ設定でソースを選択できるようになり、GitHub Pages はそこでコンテンツを探します。

そのため、サブモジュールのトリックは、同じブランチから両方のタイプのコンテンツを表示できるようにする必要がなくなりました。

于 2012-08-21T05:56:49.223 に答える
0
cp -r public/* ./
git add .
git stash
git checkout gh-pages
git stash apply
于 2012-08-21T04:35:47.760 に答える