从命令行重命名 Github 存储库
Rename Github repo from command line
我用谷歌搜索并在 Whosebug 上搜索了以下问题,但是找不到任何满意的答案。
也就是说,我有一个远程存储库:https://github.com/<username>/foo
并且我
希望在远程站点以及命令行的本地配置条目中将其重命名为 https://github.com/<username>/bar
,现在我在本地克隆了回购协议“~/my_github_repos/foo”。
所以基本上,我希望将此回购协议的所有内容从 foo
转换为 bar
(网址/配置/本地文件夹)
为此,我将文件夹 ~/my_github_repos/foo/
重命名为 ~/my_github_repos/bar/
并尝试这样做,
git remote set-url origin https://github.com/<username>/bar.git
但这只是在本地而不是远程完成的。因此,当我对现在重命名的文件夹 bar
中的文件进行一些更改并执行 git push origin master
时,它给了我错误:
remote: Repository not found.
fatal: repository 'https://github.com/<username>/bar.git/' not found
那么,我需要做什么才能在本地进行更改并在远程反映出来,以重命名回购协议?
我知道 Github.com 提供了一个非常好的 UI 来重命名存储库,但是我只想知道是否有一种方法可以从命令行通过几个步骤来完成。如果没有,我同意从 github.com 网站重命名它很简单。
这个问题的原因是,我喜欢主要从命令行做事,而不是到处跑,做像重命名存储库这样简单的任务。
P.S。我搜索了Whosebug,发现了这个:,这可能看起来与这个问题相似,但它是不同的。
本地存储库和远程存储库在这方面是分开的。没有 Git 命令可以让您更改远程存储库的 path/name。
您在问题中提到您已经更改了本地目录的名称并将存储库 URL 更新为 git remote set-url
。因为您不能 重命名 远程存储库 Git,所以您需要以您拥有的实际远程存储库的 type/software/platform 支持的方式执行此操作。
这是用 GitHub 标记的,所以您的问题归结为:有没有办法更改 GitHub 存储库不使用 Web 界面? 是的,这可以通过 GitHub API 发送 PATCH
请求到 /repos/{owner}/{repo}
并指定不同的 name
参数 (docs).
我建议使用 GitHub CLI 的 api
-command,它允许以安全的方式向 GitHub API 发出经过身份验证的请求:
gh api -X PATCH --raw-field name=new-name repos/account-name/current-name
GitHub CLI 有一个 feature request,允许使用专用命令重命名存储库,而不是使用 api
-command.
另一种选择是直接使用curl
。但是,在命令行中传递凭据具有安全隐患,我不建议这样做。为了示例,这里是请求的样子:
curl -X PATCH \
-d '{"name": "new-repo-name"}' \
-H "Authorization: token ghp_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
"https://api.github.com/repos/account-name/current-repo-name"
I like to do things mostly from commandline rather than go here and there for doing tasks as simple as renaming a repo.
不再需要使用 API 命令,使用 new gh 2.3.0.
它确实使用相同的 API 调用重命名了远程存储库。
但是:它 也 重命名远程“origin
” URL 以匹配新重命名的存储库 URL.
见PR 4450 and commit 67d1a90, with pkg/cmd/repo/rename/rename.go#updateRemote() git.UpdateRemoteURL()
但您可以使用 gh extension, as illustrated here by Nate Smith 走得更远。
gh
2.6.0 (March 2022) add interactive repository edit functionality by @g14a,其中包括存储库重命名。
我用谷歌搜索并在 Whosebug 上搜索了以下问题,但是找不到任何满意的答案。
也就是说,我有一个远程存储库:https://github.com/<username>/foo
并且我
希望在远程站点以及命令行的本地配置条目中将其重命名为 https://github.com/<username>/bar
,现在我在本地克隆了回购协议“~/my_github_repos/foo”。
所以基本上,我希望将此回购协议的所有内容从 foo
转换为 bar
(网址/配置/本地文件夹)
为此,我将文件夹 ~/my_github_repos/foo/
重命名为 ~/my_github_repos/bar/
并尝试这样做,
git remote set-url origin https://github.com/<username>/bar.git
但这只是在本地而不是远程完成的。因此,当我对现在重命名的文件夹 bar
中的文件进行一些更改并执行 git push origin master
时,它给了我错误:
remote: Repository not found.
fatal: repository 'https://github.com/<username>/bar.git/' not found
那么,我需要做什么才能在本地进行更改并在远程反映出来,以重命名回购协议?
我知道 Github.com 提供了一个非常好的 UI 来重命名存储库,但是我只想知道是否有一种方法可以从命令行通过几个步骤来完成。如果没有,我同意从 github.com 网站重命名它很简单。
这个问题的原因是,我喜欢主要从命令行做事,而不是到处跑,做像重命名存储库这样简单的任务。
P.S。我搜索了Whosebug,发现了这个:
本地存储库和远程存储库在这方面是分开的。没有 Git 命令可以让您更改远程存储库的 path/name。
您在问题中提到您已经更改了本地目录的名称并将存储库 URL 更新为 git remote set-url
。因为您不能 重命名 远程存储库 Git,所以您需要以您拥有的实际远程存储库的 type/software/platform 支持的方式执行此操作。
这是用 GitHub 标记的,所以您的问题归结为:有没有办法更改 GitHub 存储库不使用 Web 界面? 是的,这可以通过 GitHub API 发送 PATCH
请求到 /repos/{owner}/{repo}
并指定不同的 name
参数 (docs).
我建议使用 GitHub CLI 的 api
-command,它允许以安全的方式向 GitHub API 发出经过身份验证的请求:
gh api -X PATCH --raw-field name=new-name repos/account-name/current-name
GitHub CLI 有一个 feature request,允许使用专用命令重命名存储库,而不是使用 api
-command.
另一种选择是直接使用curl
。但是,在命令行中传递凭据具有安全隐患,我不建议这样做。为了示例,这里是请求的样子:
curl -X PATCH \
-d '{"name": "new-repo-name"}' \
-H "Authorization: token ghp_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
"https://api.github.com/repos/account-name/current-repo-name"
I like to do things mostly from commandline rather than go here and there for doing tasks as simple as renaming a repo.
不再需要使用 API 命令,使用 new gh 2.3.0.
它确实使用相同的 API 调用重命名了远程存储库。
但是:它 也 重命名远程“origin
” URL 以匹配新重命名的存储库 URL.
见PR 4450 and commit 67d1a90, with pkg/cmd/repo/rename/rename.go#updateRemote() git.UpdateRemoteURL()
但您可以使用 gh extension, as illustrated here by Nate Smith 走得更远。
gh
2.6.0 (March 2022) add interactive repository edit functionality by @g14a,其中包括存储库重命名。