7

プロジェクトで使用するフレームワークを開発しています。ただし、フレームワークの開発は、コンテキストなしでここまで進む可能性があります。つまり、実際のプロジェクトで使用を開始し、追加、修正、または調整する必要があるものを具体的に確認する必要があります(テスト環境で機能したものは、実際の状況ではうまくいかない、意味をなさないものがある、機能を追加したいなど)。

まず第一に、フレームワークは明らかに進行中の作業であるため、フレームワークに戻って編集し、コミットし、戻ることができるように、実生活プロジェクト内で別の部分として更新されていることを確認する必要があります。実生活のプロジェクトの更新フレームワーク内で、プロジェクトの作業を続けます。

第二に、プロジェクトの切り替えを行わずにこれを達成する方法が実際に欲しいです。私が言いたいのは、Real-life プロジェクト内でFrameworkを編集し、それらのコミットをFrameworkリポジトリにプッシュできるようにしたいということです。

これを実現するためのツールはgit submodulegit subtreeである可能性が高いことはわかっていますが、どちらもかなり混乱しています。特にサブモジュールは、読み取り専用のアプローチ (ライブラリを常に最新の状態に保つなど) を重視しているようです。これは私の最初の要件を満たしますが、2 番目の要件は満たしません。

Git でこれを実現する方法と、ワークフローがどのようになるかについての指針はありますか?

4

1 に答える 1

4

2つのアプローチのいずれかが役立ちます。

それぞれが必要なものを許可し、プロジェクトをその場で編集し、その特定のコンテンツを別のリポジトリにプッシュできます。

どちらのアプローチも、両方のプロジェクトを実行し続けるために、ある程度のオーバーヘッドが発生します。

あなたが言及した2つの点について:

  • サブモジュールを使用すると、他のリポジトリのフォルダー内にリポジトリが作成されます。外側のもの (Real-Life) は、サブモジュール (フレームワーク) リポジトリの場所と現在使用されているコミットをファイルに保存します。フレームワークを編集する場合は、それが保存されているサブフォルダーに移動するだけで、その内部では、独自のリモートと履歴を持つ完全に別の git リポジトリにいるかのように動作するはずです。Framework を変更したら、Real-Life に戻り、サブモジュールの参照を更新します。プロセスは通常次のようになります。

    Edit files in Framework
    Move to Framework subfolder
    Stage, commit, and push changes to Framework repository
    Go back to Real-Life folder
    Update Real-Life submodule reference
    
  • サブツリーを使用すると、Real-Life と Framework を同じリポジトリで操作しながら、Framework コードを特定のサブフォルダーに保持できます。Framework でコンテンツを変更しても、それらの Real-Life リポジトリは単一のプロジェクトであるかのようにコミットされます。サブツリー ツールで許可されるのは、Framework フォルダーにある変更を分離し、これらから Real-Life とは別に存在する一連のコミットを作成できることです。このコミットには Framework のみの変更が含まれ、Framework にプッシュできます。リポジトリ。プロセスは次のようになります。

    Edit files in Framework
    Stage, commit, and push to Real-Life repository
    Create Framework commits using subtree tools
    Push Framework specific commits to Framework repository
    

これら 2 つの間に存在するトレードバックがまだ不明な場合は、サブモジュールを使用することをお勧めします。より多くのドキュメント、ユースケースが見つかり、一般的にそれほど複雑ではありません。いくつかの欠点がありますが、最初にサブモジュールに慣れることで、サブツリーが提供するものを評価できます。サブモジュールに関する詳細情報

于 2013-09-16T20:53:29.327 に答える