diff --git a/Commands.md b/Commands.md index 6bee4685b..a4cb6b929 100644 --- a/Commands.md +++ b/Commands.md @@ -48,6 +48,7 @@ - [`git release`](#git-release) - [`git rename-branch`](#git-rename-branch) - [`git rename-tag`](#git-rename-tag) + - [`git rename-remote`](#git-rename-remote) - [`git repl`](#git-repl) - [`git reset-file`](#git-reset-file) - [`git root`](#git-root) @@ -509,6 +510,19 @@ $ git tag test2 ``` +## git rename-remote + +Rename a git remote regardless of name conflict, and then list current git remotes. +``` +$ git remote -v +origin git@myserver.com:myuser/foo.git (fetch) +origin git@myserver.com:myuser/foo.git (push) +upstream git@myserver.com:myuser/bar.git (fetch) +upstream git@myserver.com:myuser/bar.git (push) +$ git-rename-remote upstream origin +origin git@myserver.com:myuser/bar.git (fetch) +origin git@myserver.com:myuser/bar.git (push) +``` ## git reauthor diff --git a/bin/git-rename-remote b/bin/git-rename-remote new file mode 100755 index 000000000..c2629a67d --- /dev/null +++ b/bin/git-rename-remote @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -euo pipefail + +old=$1 +new=$2 + +test -z $old && echo "old remote name required." 1>&2 && exit 1 +test -z $new && echo "new remote name required." 1>&2 && exit 1 + +if ! git config --get "remote.$old.fetch" > /dev/null; then + echo "remote $old doesn't exist" + exit 1 +fi + +if git config --get "remote.$new.fetch" > /dev/null; then + git remote remove $new +fi +git remote rename $old $new +git remote -v diff --git a/etc/git-extras-completion.zsh b/etc/git-extras-completion.zsh index a5f5c0e05..713121050 100644 --- a/etc/git-extras-completion.zsh +++ b/etc/git-extras-completion.zsh @@ -479,6 +479,7 @@ zstyle ':completion:*:*:git:*' user-commands $existing_user_commands \ release:'commit, tag and push changes to the repository' \ rename-branch:'rename a branch' \ rename-tag:'rename a tag' \ + rename-remote:'rename a remote' \ repl:'git read-eval-print-loop' \ reset-file:'reset one file' \ root:'show path of root' \ diff --git a/man/git-rename-remote.1 b/man/git-rename-remote.1 new file mode 100644 index 000000000..fcd0b4196 --- /dev/null +++ b/man/git-rename-remote.1 @@ -0,0 +1,49 @@ +.\" generated with Ronn/v0.7.3 +.\" http://github.com/rtomayko/ronn/tree/0.7.3 +. +.TH "GIT\-RENAME\-REMOTE" "1" "May 2019" "" "Git Extras" +. +.SH "NAME" +\fBgit\-rename\-remote\fR \- Rename a remote +. +.SH "SYNOPSIS" +\fBgit\-rename\-remote\fR +. +.SH "DESCRIPTION" +Rename a git remote regardless of name conflict, and then list current git remotes +. +.SH "OPTIONS" + +. +.P +The name of the remote you want to rename\. +. +.P + +. +.P +The new name of the remote\. +. +.SH "EXAMPLES" +. +.nf + +$ git remote \-v +origin git@myserver\.com:myuser/foo\.git (fetch) +origin git@myserver\.com:myuser/foo\.git (push) +upstream git@myserver\.com:myuser/bar\.git (fetch) +upstream git@myserver\.com:myuser/bar\.git (push) +$ git\-rename\-remote upstream origin +origin git@myserver\.com:myuser/bar\.git (fetch) +origin git@myserver\.com:myuser/bar\.git (push) +. +.fi +. +.SH "AUTHOR" +Written by timfeirg <\fIkkcocogogo@gmail\.com\fR> +. +.SH "REPORTING BUGS" +<\fIhttps://github\.com/tj/git\-extras/issues\fR> +. +.SH "SEE ALSO" +<\fIhttps://github\.com/tj/git\-extras\fR> diff --git a/man/git-rename-remote.html b/man/git-rename-remote.html new file mode 100644 index 000000000..411704257 --- /dev/null +++ b/man/git-rename-remote.html @@ -0,0 +1,128 @@ + + + + + + git-rename-remote(1) - Rename a remote + + + + +
+ + + +
    +
  1. git-rename-remote(1)
  2. +
  3. Git Extras
  4. +
  5. git-rename-remote(1)
  6. +
+ +

NAME

+

+ git-rename-remote - Rename a remote +

+ +

SYNOPSIS

+ +

git-rename-remote <old-remote-name> <new-remote-name>

+ +

DESCRIPTION

+ +

Rename a git remote regardless of name conflict, and then list current git remotes

+ +

OPTIONS

+ +

<old-remote-name>

+ +

The name of the remote you want to rename.

+ +

<new-remote-name>

+ +

The new name of the remote.

+ +

EXAMPLES

+ +
$ git remote -v
+origin  git@myserver.com:myuser/foo.git (fetch)
+origin  git@myserver.com:myuser/foo.git (push)
+upstream    git@myserver.com:myuser/bar.git (fetch)
+upstream    git@myserver.com:myuser/bar.git (push)
+$ git-rename-remote upstream origin
+origin  git@myserver.com:myuser/bar.git (fetch)
+origin  git@myserver.com:myuser/bar.git (push)
+
+ +

AUTHOR

+ +

Written by timfeirg <kkcocogogo@gmail.com>

+ +

REPORTING BUGS

+ +

<https://github.com/tj/git-extras/issues>

+ +

SEE ALSO

+ +

<https://github.com/tj/git-extras>

+ + +
    +
  1. +
  2. May 2019
  3. +
  4. git-rename-remote(1)
  5. +
+ +
+ + diff --git a/man/git-rename-remote.md b/man/git-rename-remote.md new file mode 100644 index 000000000..c018149d5 --- /dev/null +++ b/man/git-rename-remote.md @@ -0,0 +1,43 @@ +git-rename-remote(1) -- Rename a remote +================================= + +## SYNOPSIS + +`git-rename-remote` <old-remote-name> <new-remote-name> + +## DESCRIPTION + + Rename a git remote regardless of name conflict, and then list current git remotes + +## OPTIONS + + <old-remote-name> + + The name of the remote you want to rename. + + <new-remote-name> + + The new name of the remote. + +## EXAMPLES + + $ git remote -v + origin git@myserver.com:myuser/foo.git (fetch) + origin git@myserver.com:myuser/foo.git (push) + upstream git@myserver.com:myuser/bar.git (fetch) + upstream git@myserver.com:myuser/bar.git (push) + $ git-rename-remote upstream origin + origin git@myserver.com:myuser/bar.git (fetch) + origin git@myserver.com:myuser/bar.git (push) + +## AUTHOR + +Written by timfeirg <> + +## REPORTING BUGS + +<> + +## SEE ALSO + +<>