2

私は現在、サードパーティの依存関係を管理するために Git サブモジュールを使用できることを期待して、Git サブモジュールがどのように機能するかを確認するテストを実行しています。

私のローカル テストでは、メインの Git リポジトリを含むフォルダーがあります。scripts次に、GitHub リポジトリhttps://github.com/jrburke/requirejs/用に作成されたサブモジュールを含むサブフォルダーがあります

サブモジュールを最初にセットアップしたとき、明らかにそのサードパーティリポジトリ内のすべてのファイル/フォルダーを取得しましたが、私が興味を持った唯一のファイルはrequire.jsファイル ( https://github.com/jrburke/requirejs/blob/master/ require.js ) すべての冗長なファイル/フォルダーを削除して変更をコミットし、RequireJs がコードに変更を加えるのを待ちました。

変更が発生したときにgit pull編集したところ、変更されたすべてのファイルがプルダウンされたように見えますか? 私のレポでは、それらを削除済みとしてコミットしていましたが、サブモジュールは、変更されたファイルを明らかに望んでいなくても、関係なくプルダウンするようです。

それが問題の 1 です。2 番目の問題は、ファイルをもう一度削除してコミットすることですが、マージの問題のためにコミットできませんか? しかし、それらを削除したため、それらをマージできません! 以前にこれを見たことがありますが、解決策は特定の .git フォルダーに移動してファイルを削除して参照できないようにすることでしたが、これはサードパーティの依存関係を管理するための多くの作業のように思えますか?

git pullリポジトリのクローンを作成し、不要なファイルを削除して、サードパーティのコードの更新について聞いたときに実行したいだけです。それを達成する方法はありますか?

4

1 に答える 1

0

変更が発生したときに git をプルしましたが、変更されたすべてのファイルがプルダウンされるようです。

確かにそうです。親リポジトリには、jrburke/requirejsその完全なコンテンツを参照する SHA1 を持つアップストリーム リポジトリへの参照がまだあります。

そのリポジトリの変更されたバージョンをサブモジュールとして本当に管理したい場合は、次のことを行う必要があります。

  • そのレポをフォークする
  • フォークをサブモジュールとして追加します
  • 1 つを除くすべてのファイルを削除する
  • そのサブモジュール内で git commit し、フォークにプッシュします
  • jrburke/requirejsrepoを指す「requirejs」という名前の新しいリモートとして追加します
  • 親リポジトリに戻り、再度コミットします (サブモジュールの新しい状態を記録するため)

次に、サブモジュール内で、' git fetch requirejs'、関心のあるファイルのみを独自のバージョンにマージし、それをコミットしてフォークにプッシュできます。
いつものように、親リポジトリに戻って再度コミットすることを忘れないでください。

于 2012-08-03T06:15:35.783 に答える