

Git管理しているソースコードの更新を、NAS上のリポジトリにpushしたら、それをトリガに自動でネットワークに接続されている各PCにpushするという方式で自動デプロイ的な事を行いたいと考えているのですが、Windows
10のPCでその様な事を実現する方法が有りましたらどなたかご教示頂けないでしょうか？  
[![画像の説明をここに入力](https://i.stack.imgur.com/BExX6.png)](https://i.stack.imgur.com/BExX6.png)

[2019/02/16追記]なお、以下の様な制約・前提条件があります。

(1)外部ネットワークとの直接の接続不可  
GitHubの様な外部のサービスはセキュリティ上の問題で、利用できない事になっており、pushする際は、PCを持参して、有線で接続して手動でpushする必要があります。同じ理由でWebサーバを立てるのもむづかしい状況です。

(2)ローカルレポジトリはユーザが利用  
ローカルレポジトリにpushしたソフトはユーザ利用向けの為、それぞれのPCでGitの細かい運用を指示するのは出来ない状況です。

(3)メインレポジトリとローカルレポジトリ間の接続はLAN内のネットワーク経由で通信できます。


CC BY-SA 4.0
2019-02-15T01:21:08.330
52786
2019-02-16T03:17:01.307
2019-02-16T03:17:01.307
19869
19869
question
git windows-10
Gitリポジトリの更新を自動で複数のクライアントPCに反映させたい


`git-push`はデプロイ用途には向いていません。別の方式を検討すべきだと考えます。

* * *

本質問は[XY問題](https://ja.meta.stackoverflow.com/a/2702/2808)あるいは[ハンマー釘病](https://www.google.com/search?q=%E3%83%8F%E3%83%B3%E3%83%9E%E3%83%BC%E9%87%98%E7%97%85)であると感じました。

* * *

`git-push` コマンド自身に対する誤解があると思います。

[git push](https://git-
scm.com/book/ja/v2/Appendix-C%3A-Git%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E5%85%B1%E6%9C%89%E3%81%A8%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88#_git_push):

> git push
> コマンドは、他のリポジトリと通信し、自分のローカル・データベースにあって通信先のリポジトリにないものは何かを計算した上で、差分を通信先のリポジトリへプッシュします。このコマンドは、通信先のリポジトリへの書き込みアクセスを必要とするので、通常は何らかの形で認証が行われます。

  * ([想定](https://ja.stackoverflow.com/questions/52786/git%e3%83%aa%e3%83%9d%e3%82%b8%e3%83%88%e3%83%aa%e3%81%ae%e8%87%aa%e5%8b%95%e6%9b%b4%e6%96%b0%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6#comment55207_52786)通り動作したとして) `git-push` を実行したとき更新されるのはPC1,2,3のGitリポジトリであり、ソースコード(作業ディレクトリにcheckoutしているバージョン管理対象のファイル)ではありません。 
    * 作業ディレクトリのファイルを更新するには`git-checkout`が必要です。
  * 図中の①を行ったユーザがPC1,2,3へ書き込むための認証の仕組みが必要です。 
    * 例えば[SSHプロトコル](https://git-scm.com/book/ja/v2/Git%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB#_ssh_%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB)を利用するならPC1,2,3にSSHサーバを立てる必要があります。

その他思いついたこととしては:

  * PC4,5,6...とユーザが増えるごとにリモートリポジトリ設定の追加、認証サーバのセットアップが必要になるので管理面倒です。

* * *

質問文に書かれている以外の条件が無いのであれば、NASに共有ディレクトリを設定してそれをPC1,2,3それぞれでマウントするのが簡単ではないでしょうか。  
共有ディレクトリに置くファイルを更新する手段として[Gitフック](https://git-
scm.com/book/ja/v2/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-
Git-%E3%83%95%E3%83%83%E3%82%AF#_code_post_receive_code)が利用できると思います。


CC BY-SA 4.0
2019-02-15T10:06:20.270
52795
2019-02-15T10:06:20.270
2808
52786
answer