私のスクリプトでは、自分のリポジトリを持つライブラリ(私または他の人)を使うことがよくあります。私は自分のレポにそれらを複製して、新しいバージョンが出てくるたびにそれらを更新することに固執したくありません。 しかし、誰かがリポジトリをクローンしても、ローカルで動作し、リンクが壊れていないはずです。どうすればgitリポジトリに依存関係をリンクできますか?
私は何ができるのでしょうか?
私のスクリプトでは、自分のリポジトリを持つライブラリ(私または他の人)を使うことがよくあります。私は自分のレポにそれらを複製して、新しいバージョンが出てくるたびにそれらを更新することに固執したくありません。 しかし、誰かがリポジトリをクローンしても、ローカルで動作し、リンクが壊れていないはずです。どうすればgitリポジトリに依存関係をリンクできますか?
私は何ができるのでしょうか?
これはgitのサブモジュールで行うことができます。リポジトリでは、実行します。ライブラリのリポジトリがgit://github.com/example/some_lib.git
のURLを持っていたし、あなたのプロジェクトにlib/some_lib
でそれを望んでいた場合
git submodule add path_to_repo path_where_you_want_it
そう、あなたが入力したい:
git submodule add git://github.com/example/some_lib.git lib/some_lib
なお、このニーズあなたのリポジトリの最上位のディレクトリから実行されます。だから最初に入れているディレクトリにcd
を入れないでください。
あなたがサブモジュールを追加したり、誰かがあなたのリポジトリの新鮮なチェックアウトをしたときに、あなたがする必要があります後:
git submodule init
git submodule update
そして、あなたが追加したすべてのサブモジュールが同じでチェックアウトされますあなたが持っているリビジョン。
あなたはライブラリの1、サブモジュールへのcd
の新しいバージョンに更新して引っ張るたい:
cd lib/some_lib
git pull
次に、あなたがgit status
を行うときにlib/somelib
が変更セクションに記載されているはずです。そのファイルを追加し、コミットすると、最新の状態になります。共同編集者がそのコミットをリポジトリにプルすると、git submodule update
が再び実行されるまで、lib/somelib
が変更されて表示されます。
あなたの答えをありがとう、upvoted! (そして、明日はおそらくそれを受け入れるでしょう)もう一つのファイルを依存関係として追加する方法はありますか?それとも、フォルダ全体にする必要がありますか? –
それをサブモジュールとして追跡したいので(そして更新を簡単に取り込めるようにするためには)リポジトリ全体をプルする必要があります。他の多くのVCSと違って、gitは本当にトップレベルのリポジトリに対処したいだけです。 – Emily
[こちらを読む](https://codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/)サブモジュールが何に適しているのか、回避策を知る潜在的な問題。と[それについての議論](https://news.ycombinator.com/item?id=3904932)。 – minghua