Changing Git remote URL updates fetch but not push Changing Git remote URL updates fetch but not push git git

Changing Git remote URL updates fetch but not push


From git-remote manual:

set-url    Changes URL remote points to. Sets first URL remote points to matching regex <oldurl> (first URL if no <oldurl> is given) to <newurl>. If <oldurl> doesn’t match any URL,    error occurs and nothing is changed.    With --push, push URLs are manipulated instead of fetch URLs.

So you should additionally execute:

git remote set-url --push origin ssh://user@example.com:XX/package/name.git


As long as the config file for the repo in question contains an entry for the push URL, set-url will only update the fetch URL by default.

[remote "origin"]    url = fetch.git    fetch = ...    pushurl = push.git

As the answer of running.t explains, you can use set-url --push to change this entry. However, you will have to keep doing this every time the URL changes.

To restore the default behavior of set-url (which changes both URLs at once), just delete the entry from the config. Or delete it using set-url --delete:

git remote set-url --delete --push origin push.git

As for why a repository would ever contain a separate push url without you adding it: Some git clients like Sourcetree "helpfully" do this.