如何在GitHub上重命名仓库?

429

我想要在GitHub上重命名一个仓库,但当出现一个大红色警告时,我有些害怕:

  1. 我们不会为旧位置设置任何重定向
  2. 您需要更新本地存储库以指向新位置
  3. 重命名可能需要几分钟才能完成

有没有人有关于如何手动完成第1步和第2步的具体步骤说明?还是说我需要在本地做些什么?


12
在 Github 仓库重命名后,您无需再更新本地仓库。请参阅下面的回答 - VonC
2
在 Bitbucket 上,您可以进入仓库设置并更改名称,然后在本地计算机上还需要在 .git/config 文件中进行修改。 - aliteralmind
2
打开仓库 -> 设置 -> 重命名 - Kanagavelu Sugumar
12个回答

462

如果你是唯一参与该项目的人,那么这不是一个大问题,因为你只需要做第2步。

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

那么你的项目URL将会是1

git@github.com:someuser/someproject.git

如果您重命名您的项目,它将会更改URL中的someproject部分,例如:

git@github.com:someuser/newprojectname.git
(如果您的URL不是这种样子,请参见脚注。)
当您进行pushpull操作时,Git的工作副本使用此URL。
因此,在重命名项目后,您需要告诉工作副本新的URL。
您可以分两步完成:
首先,进入本地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 是最常见的远程名称,但它可能被称为其他名称。)

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

进一步阅读:

脚注:

1 URL 的确切格式取决于您使用的协议,例如:


谢谢您的回复!对于问题#1,我没有任何链接到仓库的网页。所以我是安全的吗?对于问题#2,那里到底发生了什么?谢谢! - rabbid
我已经添加了更多关于远程的信息,这应该会有所帮助。 - Mikel
1
我运行 git remote -v 的输出格式是 git@github.com:someuser,你在这里放的正斜杠对我没起作用。不过其他的都好使。 - yurisich
4
这会影响仓库的统计数据,比如星数吗? - Alex Naspo
1
对我来说,“git remote set-url origin https://github.com/username/newprojectname.git”起作用了。 - Abhinav Anand
显示剩余2条评论

181

请注意,自2013年5月("Repository redirects are here!")起,您可以重命名GitHub存储库而不会破坏任何链接:

我们很高兴地宣布,从今天开始,在这些情况下,我们将自动重定向先前存储库位置的所有请求到它们的新地址。您无需特别操作,只需进行重命名,剩下的工作我们来完成。

作为一个特别的优惠,我们还将服务于来自之前存储库位置的所有Git clone、fetch和push请求

这意味着您甚至不需要在本地克隆的存储库上执行 git remote set-url (更改远程 GitHub 存储库的 URL)!
尽管Gabriel评论中指出,官方 GitHub 帮助页面强烈建议您这样做:

为了减少混淆,我们强烈建议更新任何现有的本地克隆以指向新存储库 URL。您可以使用命令行上的 git remote 来完成此操作:

git remote set-url origin new_url

不过需要注意:

GitHub Pages 网站目前在其仓库更名后,并不会自动重定向到新的名称。
重命名一个 Pages 仓库 将继续破坏任何现有链接到托管在 github.io 域或自定义域上的内容。

此外,用户仍然拥有该命名空间:如果他/她使用已更改的仓库名称创建一个 新的 仓库,则该更名后的仓库的重定向将停止工作。


8
这真的很有用,但最初很令人困惑,因为重命名没有中断我的旧推送/拉取活动。现在我可以立即更改名称,并让其他人知道在某个日期之前使用 set-url 更新他们的存储库。在那个日期之后,我将通过创建一个带有漂亮的 "我已警告你" 自述文件的空白存储库来“毁掉”旧名称存储库。 - cod3monk3y
请注意,即使您不必使用git remote set-url命令将现有的本地克隆更新为指向新的存储库URL,但强烈建议您这样做。 - Gabriel

106

按以下步骤重命名一个 GitHub 仓库:

  1. 登录你的 http://github.com 账户。
  2. 浏览到需要重命名的仓库。
  3. 点击设置(Settings)
  4. Repository Name设置为新名称。
  5. 点击Rename

完成后,你的在线仓库将与你本地文件夹名称相匹配。

你可能还想要重命名你的本地文件夹。手动更改并使用GitHub Windows客户端查找你的仓库,重命名本地副本后,它将再次匹配 GitHub。


5
令人惊奇的是,这里高票答案和github.com上的帮助页面都省略了通过设置选项卡在github.com上重命名的步骤。 - user3673

16

我发现最简单的方法是:

  1. 前往你的仓库链接,例如:https://github.com/someuser/someRepo.git

  2. 点击“设置”选项卡。

进入图像描述

你会看到的第一件事是你的仓库名称,你可以编辑它。

注意:如果你已经在本地克隆了该仓库,请手动更改其文件夹名称即可。


pollux1er的答案相同 - pmiranda

12

我看到很多人对那些我认为不够准确/完整的答案给予了积极的反馈。

有两个要点需要注意:

  • 远程仓库
  • 本地仓库副本

如果你还没有在你的机器上克隆你的仓库,你只需要重命名Github仓库并继续克隆这个仓库,这样你就能得到一个本地副本。为了重命名Github仓库,你只需要:

  1. 进入仓库网站(例如:https://github.com/userX/repositoryZ)。
  2. 在导航栏中,你会看到一个名为“Settings”的选项卡。点击它。
  3. 编辑当前仓库名称为所需名称,然后点击“Rename”按钮。
  4. 像平常一样克隆仓库(例如git clone https://github.com/userX/repositoryU)。

如果你已经有了项目的本地副本,除了按照上述步骤操作,你还需要确保你的本地仓库(根目录)被正确重命名,并且指向了正确的远程url链接。为了实现这一点,你需要执行以下操作:

  1. 你可能想使用新给定的名称来命名你的仓库。要这样做,可以使用操作系统图形化界面(Finder、Windows资源管理器等)或控制台重命名本地文件夹:

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

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

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

或者

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

第二步不是必需的。Github之前宣布会将所有以前的存储库url请求重定向到指定的存储库url。这意味着您不需要使用$ git remote set-url ...,但他们仍然鼓励您这样做以避免混淆。

希望这可以帮助到您。如果您有任何问题或者本篇文章不够清晰,请告诉我。


10

此答案已过时!GitHub现在将转发到新位置。有关详情,请参见此答案


出现此警告的原因是,#1无法手动创建。

如果您是唯一的工作人员且链接到存储库,则更改本地repo和web页面中的远程即可。

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


旧的url github.com/<username>/<repository>由github拥有。 当他们不设置任何重定向到新url时,没有人可以。 因此,除了您要说的人之外,每个人都会遇到问题。

这算是一个多大的问题,取决于你自己。 如果您有一个在不同服务器上的官方项目页面, 那么github url可能不是太大的问题。 如果您在邮件列表和目录中使用github url进行广告宣传, 那么您可能不应更改repo名称。


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

如果你想让你的新repo列为旧repo的分支,你需要创建一个新的github账户。 您可以将另一个帐户添加为两个存储库的协作者。


6
  • 进入您的代码库路径。
  • 单击右侧面板中的设置按钮。
  • 将旧代码库名称替换为新名称。
  • 点击重命名按钮。

6
值得注意的是,如果你fork了一个GitHub项目并将新生成的副本重命名,那么新名称会出现在父项目的成员网络图中。互补关系也得到了保留。这应该解决了与原始问题中第一点相关的任何保留问题,即重定向问题,也就是说,你仍然可以从那里到达这里,可以这么说。我也因为警告所暗示的不可撤销性而犹豫不决,希望这能节省其他人的时间。

你不能在Github上复制你自己的项目。所以你必须使用另一个账户,但那样是可行的。 - JonnyJD
我已经将代码库分叉到一个组织中,所以我想这和使用另一个账户是一样的。我相信你是正确的。 - Neil Best
你可以创建一个新的空仓库。克隆旧仓库。添加一个引用到你的新仓库。然后将你想要的分支(例如主分支)推送到新仓库。我猜那将是一个部分分叉。 - Darrel Lee

3
这个解决方案适用于使用GitHub桌面版的用户。
  1. 在GitHub.com上的设置中将您的存储库重命名。

  2. 现在从您的桌面点击同步按钮。

完成。


很奇怪,这样一个基本功能在应用程序本身中都找不到。 - svarog

1
  1. 在浏览器中打开此链接 (https://github.com/)

  2. 在页面右侧找到“Repositories”

  3. 打开您想要重命名的存储库链接

  4. 点击导航栏中的“Settings”

  5. 在顶部,您会找到一个名为“Repository name”的框,您可以在其中输入新名称

  6. 点击“Rename”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接