我想重命名我在GitHub上的一个存储库,但当我看到一个大大的红色警告时说:

我们将不设置任何重定向从旧的位置 您需要更新本地存储库以指向新的位置 重命名可能需要几分钟才能完成

有人知道如何手动完成#1和#2的步骤说明吗?或者我要在当地做什么?


当前回答

这个答案现在已经过时了!GitHub现在将转发到新的位置。 详情请看这个答案。


之所以有这个警告是因为#1不能手动创建。

如果您是唯一一个在存储库上工作并链接到存储库的人,那么您可以在本地回购和web页面中更改远程。

然而,首先在github上有一个公共存储库的原因是,你可以让其他人克隆你的存储库并链接到你的github项目页面。


旧的url github.com/<用户名>/<存储库>归github所有。 当他们不设置任何重定向到新的url,没有人可以。 所以除了你要告诉的人以外,每个人的事情都会破裂。

这个问题有多严重,取决于你自己。 如果你在其他服务器上有官方项目页面, 那么github的url可能不是什么大问题。 如果你在邮件列表和目录中使用github url宣传你的项目, 那么您可能不应该更改回购名称。


更改repo名称的另一种方法是创建一个新的存储库,并在旧的存储库中(也作为repo中的提交)留下关于如何到达新repo的说明。

如果你不想让你的新回购被列为旧回购的一个分支,你需要创建一个新的github账户。 您可以将其他帐户添加为两个存储库的合作者。

其他回答

此解决方案适用于使用GitHub桌面的用户。

从GitHub.com上的设置重命名您的存储库 现在在桌面上单击“同步”。

完成了。

我看到很多积极的反馈,但我认为这些反馈并不准确/完整。

有两件事需要记住:

远程存储库 存储库的本地副本

如果你还没有在你的机器上克隆你的回购,你只需要重命名Github存储库,然后继续克隆回购,这样你就可以有一个本地副本。为了重命名Github回购,你只需要:

访问存储库站点(即https://github.com/userX/repositoryZ)。 在导航栏中,你会看到一个名为“设置”的选项卡。点击它。 只需编辑当前存储库名称,并按“重命名”。 像往常一样克隆存储库(即git Clone https://github.com/userX/repositoryU)。

如果您已经有了项目的本地副本,除了遵循上述步骤外,您还需要确保您的本地存储库(根文件夹)被正确地重命名,并且它指向正确的远程url:)链接。为了实现这一目标,请采取以下措施:

你可能想在你的回购中使用新的给定名称。要做到这一点,可以使用OS GUI(Finder, Windows资源管理器等)或控制台重命名本地文件夹:

mv -R current-repo-name new-repo-name

更改远程url。从文件夹的根目录,使用以下命令:

$ git远程设置url来源https://github.com/userX/repositoryU

or

$ git remote set-url origin git@github.com:userX/repositoryU.git

但是,第二步并不是强制性的。Github不久前宣布,他们将重定向所有来自以前存储库url的请求到指定的url。这意味着你不需要使用$ git remote set-url…,但他们仍然鼓励你这样做,以避免混淆。

希望有帮助。如果你有任何问题或帖子不够清楚,请告诉我。

导航到存储库路径。 点击右边窗格中的设置按钮。 将旧的存储库名称替换为新名称。 点击重命名按钮

请注意,自2013年5月以来(“仓库重定向在这里!”),你可以重命名你的GitHub回购而不破坏任何链接:

我们很高兴地宣布,从今天开始,在这种情况下,我们将自动将对以前存储库位置的所有请求重定向到它们的新家。你不需要做什么特别的事情。只要重新命名就行了,剩下的我们会处理。 作为一个特别的奖励,我们还将为所有Git克隆、获取和推送请求提供服务,这些请求来自以前的存储库位置。

这意味着你甚至不需要git远程set-url(改变你的远程GitHub回购的url)在你的本地克隆回购! 尽管Gabriel在评论中指出,GitHub官方帮助页面强烈建议您这样做:

为了减少混乱,我们强烈建议更新任何现有的本地克隆以指向新的存储库URL。你可以通过在命令行上使用git remote来做到这一点:

git remote set-url origin new_url

不过要注意:

GitHub Pages站点在其存储库重命名时不会自动重定向。 重命名Pages存储库将继续破坏到github上托管的内容的任何现有链接。IO域或自定义域。

另外,用户仍然拥有命名空间:如果他/她使用重命名的repo的旧名称创建了一个新的repo,重定向(对于所说的重命名的repo)将停止工作。

如果你是这个项目的唯一工作人员,这不是一个大问题,因为你只需要做第2点。

假设您的用户名是someuser,项目名为someproject。

那么项目的URL将是1

git@github.com:someuser/someproject.git

如果你重命名你的项目,它将改变URL的someproject部分,例如。

git@github.com:someuser/newprojectname.git

(如果您的URL不像这样,请参阅脚注)。

当您执行推或拉操作时,Git的工作副本将使用此URL。

因此,在重命名项目后,必须将新URL告知工作副本。

你可以分两步完成:

首先,cd到你的本地Git目录,并找出哪些远程名称指向该URL:

$ git remote -v
origin  git@github.com:someuser/someproject.git

然后,设置新的URL

$ git remote set-url origin git@github.com:someuser/newprojectname.git

或者在旧版本的Git中,你可能需要:

$ git remote rm origin
$ git remote add origin git@github.com:someuser/newprojectname.git

(origin是最常见的远程名称,但也可能称为其他名称。)

但如果有很多人都在为你的项目工作,他们都需要执行上述步骤,也许你甚至不知道如何联系他们并告诉他们。这就是第一条。

进一步阅读:

GitHub -使用遥控器 Git参考-遥控器 Git书籍分布式工作流

脚注:

URL的确切格式取决于你使用的协议。

一些东西/一些项目 HTTPS = https://someuser@github.com/someuser/someproject.git //github.com/someuser/someproject.git