我可以在不更改URL的情况下重命名Git子目录吗



我是Git新手。我在一个Git网站上工作,我想重命名其中一个子目录,但不想更改其子内容的URL。这部分是因为断开的链接会引起问题,部分是因为如果URL保持不变,它对其中的内容仍然有意义。

该子目录当前名为"高级指南",我想将其重命名为"用户指南",但不希望URL从xyzi.com.au/Documentation/Advanced-Guides/更改

有没有一种方法可以在不更改URL的情况下更改子目录名?

如果我们使用cms,这是可能的,所以我真的希望有一种方法我们可以在这个网站上做到这一点。有人告诉我这是不可能的,但我觉得很难相信(我一直是个乐观主义者(!

我附上了几个屏幕截图来显示文件结构——一个是Finder的视图,另一个是Terminal:的视图

这是通过Finder 列出的子目录

这是通过终端的子目录的内容,如果URL更改,会有很多内容受到影响

我希望这个url保持不变,即使在我将子目录从"高级指南"重命名为"用户指南"之后

我能尝试什么?

根据评论,这里的答案是,如果你自己托管远程设备,你可能可以设置重复的名称/路由,以完成你想要的任务。否则,这可能是不可能的(在Github、Gitlab等上(

然而,我的答案是,你应该认真地重新审视为什么你想这样做,并可能解决导致你想这么做的根本原因,而不是追求基于git或服务器的bandaid,通过将其进一步、更长时间地扩展到你的代码库中来锁定可能糟糕的基础设施。

您的基础结构中的某些部分是使用硬编码链接构建的,而不是灵活和/或可配置的。从长远来看,重构基础架构以支持更灵活的方法可能更有价值,如果时间/时间表至关重要,那么您总是可以通过查找/替换来更改硬编码的链接,但仍然是硬编码的。


替代解决方案的其他注意事项

更新外部URL链接可能会破坏向后兼容性。然而,如果是这样,很可能您没有很好地设置回购的相互依赖关系。例如,使用Git子模块可以将一个repo的提交与另一个repo的提交联系起来,以便版本控制始终是可继承的正确。

即,如果硬编码的URL在外部工具中,如果您在其repo中修复了这些链接,同时将子模块更新到主代码repo中目录名称正在更改的提交,那么对两个repo的更新将同步。

或者更简单地说,如果硬编码链接在该工具的配置文件中,只需将配置文件保存在主代码repo中即可。这遵循";作为代码的基础设施";设计模式和最佳实践。如果您的外部工具是土生土长的工具,那么将其更改为接受文件中的某种配置变量应该不会太困难,而不是将硬编码值编译到工具中。

因此,这可能不是你想要的答案,但我们必须不断学习更好的技术,以实现长期可维护性和可扩展性,如果你有时间解决核心问题,这似乎是一个将项目推向这个方向的机会。只要这不是一次性的或一次性的开发代码,这可能是最好的选择。

最新更新