重命名 Git 存储库有哪些副作用

Gui*_*ens 7 git rename repository

假设我需要重命名一个已被许多开发人员下载的 Git 存储库。

如果我重命名此存储库,会发生什么副作用(如果有)?我的意思是,除了开发人员必须在本地存储库中执行更改才能更改其远程存储库之外,如下所示

git remote set-url origin new_url
Run Code Online (Sandbox Code Playgroud)

为了方便讨论,请考虑 Git 服务器是私有服务器,并且所有开发人员都属于同一家公司。

无论如何,我检查了有关在 Git 中重命名存储库的其他问题,但除了更改之外,没有一个问题具体说明了副作用git remote

重命名 Bitbucket git 存储库如何影响分叉存储库?

如何重命名 Git 存储库?

如何重命名 GitHub 上的存储库?

tor*_*rek 6

正如我四天前在评论中所说,更改名称的唯一真正“副作用”是每个使用该名称的人也必须更改其用途。这不完全是副作用,因为它是主要效果:您更改了名称!

因此,更有趣的问题是:谁使用这个名字? 这里的一些答案是显而易见的:它存储在各种 URL 中,通常位于各种“远程”下,例如origin

$ git config --get remote.origin.url
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
Run Code Online (Sandbox Code Playgroud)

(这个克隆早于 GitHub 上的公共访问克隆,例如https://github.com/torvalds/linux,或者我可能会使用那个)。如果 Linus Torvalds 要在这里重命名他的 Git 存储库,我就必须更改存储的 URL。但你自己已经说过了。

那么:存储库的名称还可以存储在哪里?我能想到的唯一其他地方是:

  • 在各种 shell 脚本和 YAML 文件等中,无论出于何种原因,它们都存储在其中;和
  • in--shared和/或克隆,它们在存储库中--reference设置 Git 所谓的替代项。

如果您已经制作了此类克隆,则应该检查这一点。如果 Git 有一种更方便的方法来做到这一点可能会很好,但基本上现有的方法是找到所有目录并在其中.git进行检查。objects/info/alternates另请参阅git clone --shared 和 --reference 之间有什么区别?

Shell 脚本、YAML 文件等有多种形式,并且没有通用的方法来查找它们,尽管明显的“grep”样式检查是显而易见的。(它仍然可能会错过任何通过 和/或 压缩转换为二进制的内容。)