3

ソフトウェアが含まれているリポジトリmasterが branchにあり、そのホームページが branch にありgh-pagesます。プロジェクトには、ブランチexamplesに含める必要があるソース ファイルを含むディレクトリが含まれています。masterホームページには、コンパイルされた例と、場合によってはソース ファイルも含まれている必要があります。master両方のブランチ間でサンプル (コンパイルするブランチに依存する) を共有するにはどうすればよいですか? 望ましいワークフローは次のとおりです。

$ git checkout gh-pages; ls examples/ # ディレクトリは空です
$ git チェックアウト マスター; ls examples/ # ディレクトリには .tex ソース ファイルが含まれます
著者.tex
$ make examples && ls examples/ # .tex ファイルを .png ファイルにコンパイルします
author.tex 著者.png
$ $MAGIC_COMMIT_TO_BRANCH_SELECTED_FILES gh-pages author.png author.tex
$ git checkout gh-pages; ls の例/
author.tex 著者.png

ブランチgh-pagesには既に例が含まれている可能性があるため、このブランチに切り替えるだけで、新しくコンパイルされたファイルが上書きされます。masterコンパイルされたファイルは、ブランチにコミットしないでください。別のブランチを作成することを考えましexamplesたが、これは実際には簡単ではありません。git submodule が特定のブランチを指すことができれば (できますか?) examples、サブモジュールとして他のブランチで使用されるブランチを作成できます。サンプルを別のリポジトリに移動することもできますが、すべてを 1 つのリポジトリに保持することをお勧めします。マージ マネージャまたはチェリー ピッキング マジックが存在する可能性があります。

4

2 に答える 2

1

バージョン管理とは何かを理解していないと思います。少なくとも、ブランチを間違った方法で使用しているように思えます。すべての問題を引き起こしているのは、面倒なリポジトリ設計です。ソースを 2 つのブランチに置くことは意味がありません。同時に、コンパイル済みファイルを 1 つのブランチから生成し、別のブランチでコミットする必要があります。それが生み出された源。

別のリポジトリを使用する代わりに、ブランチを使用しているようです。あるブランチで何らかのソースからコードをコンパイルし、別のブランチでファイルをコミットする場合、どのバージョンのソースからコンパイルされたかをどのように知ることができますか?

ソースとコンパイルされたファイルを1つのブランチに入れ、「完了する」まで作業してコンパイルし、変更をマスターにマージできない理由がわかりません。次に、2 つのブランチにソース ファイルとコンパイル済みファイルがあります。:) 別の方法は、ソースを 1 つのブランチに保持し、ソースを「完了」するまでソースで作業し、変更をマスターにマージすることです。master ブランチをチェックアウトし、新しいコンパイル済みファイルをコンパイルしてコミットします。

于 2011-03-17T11:22:03.137 に答える