17503


質問はタイトルの通りで、現在CMSを使ってブログサイトを作成しているのですが、CMSを親リポジトリとしてそのSubmoduleにCMSにより生成されたブログ本体を保持させているのですが、サブモジュールであるブログ本体は、親モジュールであるCMSによって生成されるので、親モジュールの変更と同時にサブモジュールもコミットプッシュしたいのですが、そういったことはGitコマンドで可能でしょうか。  
もしそのようなコマンドが存在しないのであれば、サブモジュールをプッシュしたあとで親モジュールをプッシュするという形になるのでしょうか。

追記

[code]

    Pushing submodule 'public'
    fatal: The current branch master has no upstream branch.
    To push the current branch and set the remote as upstream, use
    
        git push --set-upstream origin master
    
    Unable to push submodule 'public'
    fatal: Failed to push all needed submodules!
    
[/code]

public というのはサブモジュールのディレクトリ名です。


CC BY-SA 3.0
2015-10-10T06:48:27.340
17501
2015-10-10T12:53:02.577
2015-10-10T12:53:02.577
7232
7232
question
git github
Git submoduleを親のリポジトリと同時にコミット、プッシュしたい


一般的には次のような手順になると思います。

コミット: まず `git submodule foreach` を使い、各サブモジュールでの変更のステージングとコミットを行います。コミットメッセージは
`-m` オプションで与えてください。

[code]

    git submodule foreach git add -A
    git submodule foreach git commit -m 'submodule commit message'
    
[/code]

その後にメインモジュールのステージングとコミットを行います。

[code]

    git add -A
    git commit
    
[/code]

プッシュ: `git submodule foreach git push` を使ってもよいですが、 `git push` には `--recurse-
submodules=on-demand`
というオプションがあり、これを利用すればメインモジュールおよび変更のあったサブモジュールのプッシュを同時に実行できます。

[code]

    git push --recurse-submodules=on-demand
    
[/code]

うまくシェルスクリプトを書けば、同一のコミットメッセージを使ってすべてのサブモジュール・メインモジュールのコミット・プッシュができると思います。工夫してみてください。

(なお `commit-msg` フックを利用する方法はうまくいきません)


CC BY-SA 3.0
2015-10-10T11:19:03.670
17503
2015-10-10T11:19:03.670
9873
17501
answer