[Git] 1回の git push で複数のoriginに送信する

普段GitHubを利用しているのですが、たまにサービス毎落ちるんですよねw 大抵の場合は仕事を切り上げる理由になって良いのですが、取り急ぎpushだけでもしたいといった場合に困るわけです。VCSはバックアップも兼ねてますからね。

そんなときに普段から別のリポジトリを作成し、バックアップ用に毎回pushしておきます。 コマンドは以下の通り。

$ cd (作業ディレクトリ)
$ git remote set-url --add origin git@github.com:katsube/example.git

正常に登録されたか確認しておきます。1-2行目が最初からあるもの、3行目が新たに追加した物ですね。

$ git remote -v
origin  git@github.com:katsube/original.git (fetch)
origin  git@github.com:katsube/original.git (push)
origin  git@github.com:katsube/example.git (push)

あとはいつも通りgit pushすれば自動的に2箇所にpushしてくれます。

$ git push

ここでは両方GitHubを使っていますが、BitBucketGitLabはもちろん自分が管理するサーバなどのリポジトリに必要に応じて置き換えて実行してくださいませ。

こちらの意図したタイミングだけpushしたい

普段は自分のリポジトリで開発をし、最終的な成果物をクライアント企業などに提出するときだけpushしたいと言った場合がありますよね。このような意図したタイミングでだけpushしたい場合は、リモートを適当な名前を付けて登録します。

コマンドは以下。backupという名前を付けました。

$ git remote add backup git@github.com:katsube/example.git

登録状態を確認します。デフォルトで作成されるoriginとは別に先ほど追加したbackupがいるのがわかります。

$ git remote -v
backup  git@github.com:katsube/example.git (fetch)
backup  git@github.com:katsube/example.git (push)
origin  git@github.com:katsube/original.git (fetch)
origin  git@github.com:katsube/original.git (push)

あとは追加したリポジトリへgit pushしたいときにだけ以下のコマンドを実行します。

$ git push backup

設定ファイルを編集する

作業ディレクトリにある.git/configでも確認できます。ここを直接編集しても良いですね。

$ cat .git/config
[remote "origin"]
url = git@github.com:katsube/original.git
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:katsube/example.git

参考ページ