ローカルのgitレポジトリに、githubのリモートレポジトリを登録すると、デフォルトではoriginという名前で指定したURLを登録します。
この、URLを変更・上書きしたり、originを削除したり、名前を変更したり、新しいリモートレポジトリを追加して複数管理する方法についてです。
現在のリモートレポジトリの確認方法
最初に、現在のリモートレポジトリを確認する方法を紹介しておきます。
現在のリモートレポジトリ名やURLを調べたいときや、正しく設定されたかを確認するときに使います。
リモートレポジトリの登録方法
なお、初期のリモートレポジトリは以下のように登録します。
git remote add <リモートレポジトリ名> <URL>
#リモートレポジトリの登録
git remote add origin https://github.com/test-repo/app.git
リモートレポジトリの確認
確認方法は2つあります。1つはサクッと確認する方法、もう一つは大元のconfigファイルの中身を確認する方法です。
▼サクッと確認する方法
git remote -v
$ git remote -v
origin https://github.com/test-repo/app.git (fetch)
origin https://github.com/test-repo/app.git (push)
▼大元のファイルを確認する方法
cat .git/config
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/test-repo/app.git
fetch = +refs/heads/*:refs/remotes/origin/*
リモートレポジトリURLの変更・上書き方法
登録したURLのみを変更するには、set-urlを使います。
git remote set-url <リモートレポジトリ名> <新しいURL>
#URLのみ変更
$ git remote set-url origin https://github.com/changed-repo/app.git
#確認
$ git remote -v
origin https://github.com/changed-repo/app.git (fetch)
origin https://github.com/changed-repo/app.git (push)
OriginレポジトリのURLを test-repo から、changed-repo に変更することができました。
なお、git remote add origin <URL>
で上書きしようとすると、エラーが表示されます。(fatal: remote origin already exists.)
また、git remote add のfオプションは、force(強制実行)ではなく、fetch のfです。
リモートレポジトリの名前を変更・上書きする方法(originを変える)
リモートレポジトリの名前、いわゆるorigin、を変更・上書きするには、remote rename
を使います。
git remote rename <変更前のレポジトリ名> <変更後のレポジトリ名>
#レポジトリ名の変更
$ git remote rename origin changed
#確認
$ git remote -v
changed https://github.com/test-repo/app.git (fetch)
changed https://github.com/test-repo/app.git (push)
レポジトリ名が origin から changed に変更されました。
今後pushやpullを行う時はこの新しい名前をしてします。 git push changed <ブランチ名>
もうoriginは存在していないので、originを指定するとエラーが出ます。
リモートレポジトリを削除する方法
登録したリモートレポジトリを削除するには、rmを使います。
git remote rm <リモートレポジトリ名>
#リモートレポジトリを削除
$ git remote rm origin
#確認(何も表示されません)
$ git remote -v
登録済みのリモートレポジトリがないので、git remote -v
で何も表示されません。
リモートレポジトリを複数登録する方法
リモートレポジトリを複数登録できます。これをすると、ブランチの内容をそれぞれのリモートレポジトリに送ることもできます。
git remote add <リモートレポジトリ名> <URL>
#リモートレポジトリの追加
$ git remote add new https://github.com/new-repo/app.git
#確認
$ git remote -v
new https://github.com/new-repo/app.git (fetch)
new https://github.com/new-repo/app.git (push)
origin https://github.com/test-repo/app.git (fetch)
origin https://github.com/test-repo/app.git (push)
リモートレポジトリとして、origin と newの2つが登録されています。
git push origin <ブランチ名>
、git push new <ブランチ名>
とすれば、それぞれのgithubのレポジトリにブランチの内容をプッシュできます。
configファイルを直接編集する
これまで、コマンドでリモートレポジトリを追加したり、内容を変更したり、削除する方法について解説してきました。
これらは、大元のconfigファイルを間接的に操作するコマンドなので、直接configファイルを編集することで、リモートレポジトリの情報を変更することもできます。
ファイルパスは、 .git/config
です。git initすれば自動で生成される隠しファイルです。
コマンドライン上でvimエディタを使って編集する場合は次のようになります。
#vimエディタで開く
vim .git/config
ファイルの中身が表示されます。
- 削除: 矢印キーで行を指定して
dd
をクリックすれば消せます。 - 編集:
i
キーで挿入モードになり、入力できるようになります。抜ける時は escキーをクリックします。
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/test-repo/app.git
fetch = +refs/heads/*:refs/remotes/origin/*
[remote "new"]
url = https://github.com/new-repo/app.git
fetch = +refs/heads/*:refs/remotes/new/*
~
~
".git/config" 13L, 344C
編集が終了したら、wq
で保存して終了。(挿入モードの場合はescキーをクリックしてから実行します)
保存したくない場合は、 q!
で強制終了できます。
参考
git remoteに関するコマンドの一覧やオプション一覧は公式ページで確認することができます。