git-mv-remote: rename a remote regardless of any existing remotes

This commit is contained in:
timfeirg 2019-04-26 19:07:16 +08:00
parent a214c93ad4
commit ecdd665f1c
No known key found for this signature in database
GPG key ID: E0AABAE6842603BA
6 changed files with 255 additions and 0 deletions

View file

@ -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

20
bin/git-rename-remote Executable file
View file

@ -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

View file

@ -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' \

49
man/git-rename-remote.1 Normal file
View file

@ -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 <old\-remote\-name> <new\-remote\-name>
.
.SH "DESCRIPTION"
Rename a git remote regardless of name conflict, and then list current git remotes
.
.SH "OPTIONS"
<old\-remote\-name>
.
.P
The name of the remote you want to rename\.
.
.P
<new\-remote\-name>
.
.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>

128
man/git-rename-remote.html Normal file
View file

@ -0,0 +1,128 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' value='text/html;charset=utf8'>
<meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
<title>git-rename-remote(1) - Rename a remote</title>
<style type='text/css' media='all'>
/* style: man */
body#manpage {margin:0}
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
.mp h2 {margin:10px 0 0 0}
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
.mp h3 {margin:0 0 0 4ex}
.mp dt {margin:0;clear:left}
.mp dt.flush {float:left;width:8ex}
.mp dd {margin:0 0 0 9ex}
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
.mp pre {margin-bottom:20px}
.mp pre+h2,.mp pre+h3 {margin-top:22px}
.mp h2+pre,.mp h3+pre {margin-top:5px}
.mp img {display:block;margin:auto}
.mp h1.man-title {display:none}
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
.mp h2 {font-size:16px;line-height:1.25}
.mp h1 {font-size:20px;line-height:2}
.mp {text-align:justify;background:#fff}
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
.mp u {text-decoration:underline}
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
.mp b.man-ref {font-weight:normal;color:#434241}
.mp pre {padding:0 4ex}
.mp pre code {font-weight:normal;color:#434241}
.mp h2+pre,h3+pre {padding-left:0}
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
ol.man-decor {width:100%}
ol.man-decor li.tl {text-align:left}
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
ol.man-decor li.tr {text-align:right;float:right}
</style>
</head>
<!--
The following styles are deprecated and will be removed at some point:
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
.man-navigation should be used instead.
-->
<body id='manpage'>
<div class='mp' id='man'>
<div class='man-navigation' style='display:none'>
<a href="#NAME">NAME</a>
<a href="#SYNOPSIS">SYNOPSIS</a>
<a href="#DESCRIPTION">DESCRIPTION</a>
<a href="#OPTIONS">OPTIONS</a>
<a href="#EXAMPLES">EXAMPLES</a>
<a href="#AUTHOR">AUTHOR</a>
<a href="#REPORTING-BUGS">REPORTING BUGS</a>
<a href="#SEE-ALSO">SEE ALSO</a>
</div>
<ol class='man-decor man-head man head'>
<li class='tl'>git-rename-remote(1)</li>
<li class='tc'>Git Extras</li>
<li class='tr'>git-rename-remote(1)</li>
</ol>
<h2 id="NAME">NAME</h2>
<p class="man-name">
<code>git-rename-remote</code> - <span class="man-whatis">Rename a remote</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<p><code>git-rename-remote</code> &lt;old-remote-name&gt; &lt;new-remote-name&gt;</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Rename a git remote regardless of name conflict, and then list current git remotes</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p> &lt;old-remote-name&gt;</p>
<p> The name of the remote you want to rename.</p>
<p> &lt;new-remote-name&gt;</p>
<p> The new name of the remote.</p>
<h2 id="EXAMPLES">EXAMPLES</h2>
<pre><code>$ 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)
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by timfeirg &lt;<a href="&#x6d;&#x61;&#105;&#108;&#x74;&#x6f;&#58;&#107;&#x6b;&#99;&#111;&#x63;&#111;&#x67;&#x6f;&#103;&#111;&#64;&#x67;&#x6d;&#x61;&#105;&#108;&#46;&#x63;&#x6f;&#x6d;" data-bare-link="true">&#x6b;&#x6b;&#x63;&#x6f;&#99;&#x6f;&#x67;&#111;&#103;&#111;&#64;&#103;&#x6d;&#x61;&#x69;&#108;&#x2e;&#99;&#111;&#x6d;</a>&gt;</p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p>&lt;<a href="https://github.com/tj/git-extras/issues" data-bare-link="true">https://github.com/tj/git-extras/issues</a>&gt;</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<p>&lt;<a href="https://github.com/tj/git-extras" data-bare-link="true">https://github.com/tj/git-extras</a>&gt;</p>
<ol class='man-decor man-foot man foot'>
<li class='tl'></li>
<li class='tc'>May 2019</li>
<li class='tr'>git-rename-remote(1)</li>
</ol>
</div>
</body>
</html>

43
man/git-rename-remote.md Normal file
View file

@ -0,0 +1,43 @@
git-rename-remote(1) -- Rename a remote
=================================
## SYNOPSIS
`git-rename-remote` &lt;old-remote-name&gt; &lt;new-remote-name&gt;
## DESCRIPTION
Rename a git remote regardless of name conflict, and then list current git remotes
## OPTIONS
&lt;old-remote-name&gt;
The name of the remote you want to rename.
&lt;new-remote-name&gt;
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 &lt;<kkcocogogo@gmail.com>&gt;
## REPORTING BUGS
&lt;<https://github.com/tj/git-extras/issues>&gt;
## SEE ALSO
&lt;<https://github.com/tj/git-extras>&gt;