私はgit(および一般的にバージョン管理)が初めてで、ワークフローを実装する最善の方法を見つけようとしています。私は、多くの「永続的な」ブランチ、つまり、共通のコード ベースからフォークされ、マスター ブランチにマージされることのない完全に独立したプログラムを含む (個人的な) プロジェクトに取り組んでいます。(これは、私がシミュレーション モデルに取り組んでいる科学者であり、興味深い結果が得られるかどうかを確認するためだけに多くの新しいことを試しているためです。興味深い結果が得られた場合は、現在、プロジェクト フォルダー全体をコピーして、後で戻ってきてください。代わりに、この目的のために git ブランチを使用することを目指しています。)
これらのブランチは永続的であるため、あるブランチに実装した機能を別のブランチに転送しながら、2 つのブランチ間の違いを維持する簡単な方法があるかどうかを知りたいです。たとえば、リポジトリのツリーが次のようになっているとします。
model_a
/
initial commit
\
model_b
私の場合はmodel_a
、model_b
同じシミュレーション コードを広く使用して 2 つの異なるものをモデル化しています。一部のパラメータの値やシミュレーション コードの内部ループの詳細が異なる場合がありますが、それを取り巻く一般的な「インフラストラクチャ」は同じです。に取り組んでいるbranch_a
ときに、結果を視覚化する新しい方法を実装するとします。
model_a --- model_a_with_visualisation_code
/
initial commit
\
model_b
私が知りたいのは、マージの競合を除いて、入力できる git コマンドが次のようになるかどうかです。
model_a --- model_a_with_visualisation_code
/
initial commit
\
model_b --- model_b_with_visualisation_code
つまり、 に変換するために使用されたコミットだけを取得し、それらのコミットのコピーをブランチの最後に適用model_a
したいと考えています。または、少なくとも、それが私が望んでいることだと思います。model_a_with_visualisation_code
model_b
必要なツールのように見えますgit rebase
が、理解するのに苦労しており、この使用例を説明する例が見つかりません。またgit rebase
、コミットのコピーを作成するのではなく、古いバージョンのコミットを削除しているようです。
質問が明確であることを願っています。私が言ったように、私は git に不慣れで、主要な概念の多くはまだ少しぼんやりしています。たとえば、上記のツリーのラベルがタグまたはブランチを意味するのか、それとも単にコミットを意味するのかは完全にはわかりません。何かがどのように機能するかを誤解している場合は、説明をいただければ幸いです。