

gitから複数のリモートリポジトリにプッシュしたいと考えて調べたところ、git
configファイルに以下のようにURLを2つ設定してプッシュしてみましたが、

1つ目のものはプッシュされるのですが  
2つ目に書いたものは反映されず、ログ（プッシュコマンド後に表示されるログ）にもでてきません。

[code]

    [remote "origin"]
            url = git@github.com:xxxx/xxxx.git
            url = sakura@sakusaku.sakura.ne.jp/yyyy/yyyy.git
            fetch = +refs/heads/*:refs/remotes/origin/*
    
[/code]

urlを入れ替えてテストしたところ、両方に反映されたのでsshでの接続などはうまくいっていそうな気がしますが、他に確認するポイントなどありましたらご教授いただけましたら嬉しいです。

* * *

## 捕捉情報

sakuraのほうはさくらのレンタルサーバにて以下のサイトを参考に構成を組んでいます。  
<https://tapioca-hiroyuki.net/?blog=git0320>

ベアリポジトリを設置してそこでpushを受け  
hookを設定してノンベア（本番公開用ディレクトリ）でpullする  
という流れで組んでいます。

現状`git push origin master`を実行すると以下のようなログが表示されます。

[code]

    Counting objects: 3, done.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 332 bytes | 0 bytes/s, done.
    Total 3 (delta 2), reused 0 (delta 0)
    remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
    To git@github.com:xxxx/xxxx.git
       3452346es2..456h8b2  master -> master
    fatal: Unable to create '/var/www/html/xxx/.git/refs/remotes/origin/master.lock': ????????
    
[/code]

※最後の`????????`の部分はgitをバージョンアップする前は`permission denied`と表示されていました


CC BY-SA 4.0
2017-01-02T06:54:43.660
31569
2018-12-10T02:28:49.153
2018-12-10T02:28:49.153
19110
19992
question
git
gitから複数のリモートリポジトリにプッシュしたい


`git remote -v`
コマンドを実行すると次のような出力になっているでしょうか。originのpushに対して2行出力されるのが想定された設定かと思います。

[code]

    origin  git@github.com:xxxx/xxxx.git (fetch)
    origin  git@github.com:xxxx/xxxx.git (push)
    origin  sakura@sakusaku.sakura.ne.jp/yyyy/yyyy.git (push)
    
[/code]

* * *

質問文中にあるように`url`属性を追加するのは次のようなコマンドで行え、たしかに動作するようです(v2.11.0)

[code]

    git remote add origin git@github.com:xxxx/xxxx.git
    git remote set-url --add origin sakura@sakusaku.sakura.ne.jp/yyyy/yyyy.git
    
[/code]

が、後述参考リンクやmanを見る限り、複数のpushを行うには次のように`pushurl`属性を設定する方がより適切なように感じました。

[code]

    git remote add origin git@github.com:xxxx/xxxx.git
    git remote set-url --add --push origin git@github.com:xxxx/xxxx.git
    git remote set-url --add --push origin sakura@sakusaku.sakura.ne.jp/yyyy/yyyy.git
    
[/code]

* * *

参考:

> The <pushurl> is used for pushes only. It is optional and defaults to <url>.

[`git-push`のman](https://git-scm.com/docs/git-
push)より。`url`属性値は`pushurl`が存在しない時のデフォルト値(なので複数デフォルト値があるというのは変な感じ…？)。

  * [git - pull/push from multiple remote locations - Stack Overflow](https://stackoverflow.com/a/12795747/4506703)


CC BY-SA 3.0
2017-01-04T03:50:03.250
31604
2017-01-04T03:50:03.250
2017-05-23T12:38:55.250
-1
2808
31569
answer