【Git】リモートレポジトリ(origin)を変更・削除・上書き・追加する方法

git-prograshi(プロぐらし)-kvgit/github

ローカルの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を指定するとエラーが出ます。

存在しないレポジトリ名を指定した場合

$ git push origin main
fatal: ‘origin’ does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.


リモートレポジトリを削除する方法

登録したリモートレポジトリを削除するには、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に関するコマンドの一覧やオプション一覧は公式ページで確認することができます。

タイトルとURLをコピーしました