リモートのGitリポジトリのURI(URL)を変更するには?

USBキーに入っているレポ(origin)をハードドライブ(local)にクローンしました。オリジンをNASに移動させ、ここからクローンを作成するテストに成功しました。

そこで、"local"の設定で、"origin"のURIを変更して、USBキーからではなく、NASから取得するようにできないか知りたいと思います。

今のところ、2つの解決策があります。

  • すべてをUSB-orignにプッシュし、それを再びNASにコピーする(nas-originへの新しいコミットのため、多くの作業が必要になります)。

  • 新しいリモートを"local"に追加し、古いものを削除する(履歴が壊れてしまうのではないかと心配です)。

ソリューション

ができます。

git remote set-url origin new.git.url/here

とすることもできますし (git help remote を参照ください)、.git/config を編集してそこで URL を変更することもできます。よほど愚かなことをしない限り、履歴が失われる心配はありません (もし心配なら、自分のレポのコピーを作ればいいのです。)

解説 (13)
git remote -v
# View existing remotes
# origin  https://github.com/user/repo.git (fetch)
# origin  https://github.com/user/repo.git (push)

git remote set-url origin https://github.com/user/repo2.git
# Change the 'origin' remote's URL

git remote -v
# Verify new remote URL
# origin  https://github.com/user/repo2.git (fetch)
# origin  https://github.com/user/repo2.git (push)

リモートのURL変更

解説 (0)

Git Originサーバーのホストを変更する

差出人: http://pseudofish.com/blog/2010/06/28/change-host-for-a-git-origin-server/

願わくば、これがあなたにとって必要なことでないことを祈ります。いくつかのgitプロジェクトで共同作業をするために使っていたサーバーのドメイン名が失効しました。そのため、ローカルのリポジトリを移行して同期を取る方法を見つけなければなりませんでした。

更新:最近の git バージョンでは簡単な方法があることを指摘してくれた @mawolf に感謝します (2010 年 2 月の投稿)。

git remote set-url origin ssh://newhost.com/usr/local/gitroot/myproject.git

詳細はmanページをご覧ください。

もし古いバージョンを使っているのであれば、これを試してみてください。

注意点としては、同じサーバーで名前が違うだけの場合にのみ動作します。

新しいホスト名が newhost.com で、古いホスト名が oldhost.com だったとすると、変更はとても簡単です。

作業ディレクトリにある .git/config ファイルを編集します。次のようなものが表示されるはずです。

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = ssh://oldhost.com/usr/local/gitroot/myproject.git

oldhost.comnewhost.com` に変更し、ファイルを保存すれば完了です。

私の限られたテスト(git pull origin; git push origin; gitx)では、すべて順調に進んでいるようです。そうそう、git の内部をいじるのはよくないことだとわかっています。

解説 (1)