改變 git 某個 remote 的 url

有些時候 git repo 的 remote 會搬家(例如從 github 搬到自己 host 的 gitlab),或者是想改走不同的 protocol(例如想從 https://github.com/user/some_repo.git 改成 [email protected]:user/some_repo.git)。後者在 github 停止支援 https 密碼認證之後應該會常碰到。

首先列出認識的 remote,避免改錯。

$ git remote -v
origin  https://github.com/user/some_repo.git (fetch)
origin  https://github.com/user/some_repo.git (push)

然後下 git remote set-url

$ git remote set-url origin [email protected]:user/some_repo.git

最後確認是否已經修改完成。

$ git remote -v
origin  [email protected]:user/some_repo.git (fetch)
origin  [email protected]:user/some_repo.git(push)

如果有人想要更硬派的處理這件事,可以直接手動修改 .git/config 中的 remote 區塊。

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = [email protected]:user/some_repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master