如何重命名 git 遥控器?

rou*_*uan 26 git

我目前有一个 git 远程调用heroku,我想将它重命名为production.

$ git remote -v
heroku  https://git.heroku.com/example.git (fetch)
heroku  https://git.heroku.com/example.git (push)
Run Code Online (Sandbox Code Playgroud)

rou*_*uan 36

$ git remote rename <old-name> <new-name>
Run Code Online (Sandbox Code Playgroud)

所以,对于这个例子:

$ git remote rename heroku production
Run Code Online (Sandbox Code Playgroud)

有用的文档在这里:https : //help.github.com/articles/renaming-a-remote/


Von*_*onC 10

请注意,在 Git 2.11 之前,git remote rename可能会尝试重命名不存在的远程!

这已在 Git 2.12(2017 年第 1 季度)中修复:请参阅Johannes Schindelin提交的 e459b07af5bacf(2017 年 1 月 19 日) ( )(由Junio C Hamano 合并 -- --提交fe575f0,2017 年 1 月 31 日)dscho
gitster

remote rename:更仔细判断是否配置了remote

通过对定义在中的远程进行预期调整~/.gitconfig(例如,将“ remote.origin.prune”设置为true,即使origin在特定的 Git 存储库中实际上可能或可能没有定义“”远程),“ git remote rename”和其他命令会被误解并表现得好像这样一个不存在的远程确实存在过。


在 Git 2.26(2020 年第一季度)中,“ ”需要调整配置变量(例如),其值曾经为。现在也更新了。git remote rename X Ybranch.<name>.remoteXY
branch.<name>.pushRemote

请参阅提交 b3fd6cb(2020 年 2 月 1 日),以及提交 f2a2327提交 923d4a5提交 ceff1a1提交 1a83068提交 88f8576(2020 年 1 月 27 日),作者:Bert Wesarg ( bertwesarg)
(由Junio C Hamano 合并 -- gitster--提交d0038f4,2020年 2 月 25 日)

remote rename/remove:处理分支..pushRemote 配置值

签署人:Bert Wesarg

当重命名或删除遥控器时

git remote rename X Y
git remote remove X
Run Code Online (Sandbox Code Playgroud)

Git 已经重命名/删除了任何配置值

branch.<name>.remote = X
Run Code Online (Sandbox Code Playgroud)

branch.<name>.remote = Y
Run Code Online (Sandbox Code Playgroud)

由于branch..pushRemote也命名了一个远程,它现在也重命名或删除这些配置值

branch.<name>.pushRemote = X
Run Code Online (Sandbox Code Playgroud)

branch.<name>.pushRemote = Y
Run Code Online (Sandbox Code Playgroud)

和:

remote rename/remove: 轻轻处理remote.pushDefault配置

签署人:Bert Wesarg

当重命名遥控器时

git remote rename X Y
git remote remove X
Run Code Online (Sandbox Code Playgroud)

Git 已经重命名或删除了任何branch.<name>.remote分支。<name>.pushRemote配置,如果它们的值为X.

但是remote.pushDefault需要更温和的方法,因为这可能在非存储库配置文件中设置。
在这种情况下,仅打印警告,例如:

warning: The global configuration remote.pushDefault in:
 $HOME/.gitconfig:35
now names the non-existent remote origin
Run Code Online (Sandbox Code Playgroud)

remote.pushDefault = Y但在存储库配置中设置时,它会被更改或删除。


nik*_*ikc 10

一个常见的用例是切换origin到您的 fork 并将当前重命名originupstream.

简单的远程重命名将保留pushDefault指向branch重命名的远程的配置值,而不是通常预期的原点。如果您这样做,那么这个流程将效果最好......

首先获取当前origin

git remote -v
Run Code Online (Sandbox Code Playgroud)

记录值 ( OLD_URL),然后更改它,set-url然后将旧值添加origin为新值upstream

git remote set-url origin NEW_URL
git remote add upstream OLD_URL
Run Code Online (Sandbox Code Playgroud)