如何重命名 .git 目录?

Posted

技术标签:

【中文标题】如何重命名 .git 目录?【英文标题】:How do I rename the .git directory? 【发布时间】:2012-02-03 15:32:30 【问题描述】:

如何重命名 .git 目录

举例来说,我有一个已经使用了一段时间的 repo,但现在我决定重命名 .git 目录。我尝试了 bash mv 命令,但在我执行该命令后 git status 说我的工作目录不是 git 存储库。

【问题讨论】:

你为什么决定这样做? 为什么要重命名 .git 目录?这就像想将 git 命令重命名为别的东西。您确定不只是要重命名repo 目录吗? @anirvan 好吧,实际上,如果你重命名 git 命令,它仍然可以工作 ;) @anirvan,我不能代表 OP,但我想重命名 .git 目录的原因是为了在 TFS 中管理的项目有一个本地 git repo。 TFS 看到 .git 文件夹并假设我只是在使用 git,这样我就不能同时连接到 TFS 存储库并同时打开解决方案。 【参考方案1】:

您不能也不应该重命名.git 目录本身,它是一个固定名称(好吧,除非您将--git-dir= 传递给每个git 命令或设置GIT_DIR 环境变量)。 Git 对仓库执行操作时会搜索该目录,例如git status

您为什么决定要重命名.git 目录?如果要重命名存储库,只需重命名.git的父目录即可。

【讨论】:

我发现在我的 ~/ 目录中创建一个 git repo 来跟踪我的 dotfiles 并查看各种应用程序对配置文件所做的更改很有用。但是 Eclipse 等 IDE 会检测到 ~/workspace(甚至被忽略),并且经常会导致冗长的操作,例如大目录上的未缓存“git status”。有一些方法可以使用首选项从每个工具中排除根 repo,但是将 .git 目录重命名为 .git_alt 更简单,当我想跟踪与我的 homedir git repo。 这样做的一个原因是 OneDrive (for Business) 不能很好地处理更改其内容的文件夹(例如 git)。我正在考虑更改我的活动存储库隐藏的 git 文件夹名称,以便我可以“使”OneDrive 忽略它(通过使用无效字符,例如 )。根据微软在 Uservoice.com 上的回应,他们不打算在短期内对这些类型的路径实施全局忽略(因此,添加无效字符是一种潜在的解决方法)。 不可能让 Visual Studio 忽略 .git 文件夹并且不切换源代码管理插件(如果它存在),即使它应该使用 TFS 进行源代码管理。【参考方案2】:

我遇到了同样的问题,因为 Visual Studio 2013 (VS 2013) 中的错误与 TFS 工具结合使用。当 TFS 项目找到您之前添加的本地 .git-Project 时,它不会连接或启动。

首先关闭 VS 2013,然后将“.git”文件重命名为另一个后缀(例如“test.gitRENAMED”)。这使得与 TFS 项目的连接在 VS 2013 的下一次启动时再次可用。

为避免本地 git-repository 损坏,请稍后重新命名“.git”文件。

不幸的是,windows-explorer 不允许您将目录命名回“.git”,因为它们的用户目录策略。

只需在 Linux 机器上或通过 Windows-Explorer-Tool “Total Commander”重命名文件夹即可。

【讨论】:

【参考方案3】:

不知道你为什么要重命名它,但无论如何......

Git 期望:

.git 目录存在于当前目录或其父目录下, 或要设置的GIT_DIR 环境变量。

一般情况下,除非有非常特殊的情况,否则您永远不应该离开.git。正是这个目录包含了所有内容(就像 Subversion 1.7+ 使用 .svn 目录和 CVS 使用 CVS 目录一样——只是 git 只使用根目录下的一个目录)

唯一的例外是裸存储库,您需要在 git 目录中对其进行操作——但通常从不直接接触它们,除非您真的知道自己在做什么。 p>

【讨论】:

Subversion 从 v1.7 开始也只使用项目根目录下的单个目录 也许我只是不了解 Git 的工作方式。例如,当我克隆一个远程仓库时: git clone git://git.kernel.org/pub/scm/git/git.git Git 目录是如何通过 ../git.git 访问的? 【参考方案4】:

你没有。

Git 通过在当前目录中查找.git 目录来确定您是否在存储库中,然后查找父目录,依此类推。* 如果重命名它,Git 不知道在哪里查找.通过将其重命名为 .git 来修复您的存储库。

如果您真的想在这里完成一些事情,而不仅仅是为了好玩而重命名目录,请编辑您的问题或就您的真正问题提出新问题。


* 为了支持裸仓库,它基本上只包含顶层 .git 目录的内容,它还会查找某些文件。

【讨论】:

【参考方案5】:

您不能重命名 .git 目录。 Git 需要能够找到它。

【讨论】:

以上是关于如何重命名 .git 目录?的主要内容,如果未能解决你的问题,请参考以下文章

在git下提交文件时如何控制重命名阈值?

git重命名许多文件和文件夹

如何重命名本地 Git 分支?

想不到一个简单的重命名,在git中也有这么多学问

想不到一个简单的重命名,在git中也有这么多学问

当我重命名 git repo 的父目录时会发生啥?