web-dev-qa-db-ja.com

gitサブモジュールを独自のフォークと交換します

私はこのように私のgitリポジトリにサブモジュールを追加しました:

$ git submodule add git://github.com/user/some-library some-library

いくつかの調整を行うために、そのライブラリのフォークを作成することにしました。そのサブモジュールを交換して、代わりに自分のgithubフォークを指すようにするにはどうすればよいですか?

27
Svish

サブモジュールは.gitmodulesに保存されます。

$ cat .gitmodules
[submodule "ext/google-maps"]
    path = ext/google-maps
    url = git://git.naquadah.org/google-maps.git

テキストエディタでurlを編集する場合は、以下を実行する必要があります。

$ git submodule sync

これにより、このサブモジュールリストのコピーを含む.git/configが更新されます([submodule]の関連する.git/configセクションを手動で編集することもできます)

gitシステムは少し不完全に見えますが、submoduleコマンドだけでそれを行う方法があるかもしれません(例: サブモジュールを削除する手順 を参照)

40
dbr

それがどれくらいの期間真実かはわかりませんが、確かにかなり古いgit1.8サブモジュールにもリモコンがあります。だから、あなたはすることができます

cd some-library   # this is entering the submodule
git remote -v     # just to see what you have; I guess Origin only
git remote add myrepo git-URL-of-the-fork
git checkout -b my_new_idea
git Push -u myrepo my_new_idea

これで、サブモジュールは元のリポジトリではなくフォークで機能します。通常のPush, pull, rebaseなどを実行できます。プルリクエストがマージされると、通常のgit remote remove myrepoでリモートを削除できます。もちろん、サブモジュールの操作に関する他のすべての警告が適用されます(たとえば、サブモジュールの変更をスーパーモジュールの新しいコミットとしてコミットする必要があります)。

3
mcepl