【问题标题】:How do I rename the .git directory?如何重命名 .git 目录?
【发布时间】: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 存储库并同时打开解决方案。

标签: git rename


【解决方案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 需要能够找到它。

      【讨论】:

        猜你喜欢
        • 2011-08-19
        • 2010-11-18
        • 2011-05-28
        • 2012-06-26
        • 2020-05-17
        • 2019-01-23
        • 1970-01-01
        • 1970-01-01
        • 2018-10-24
        相关资源
        最近更新 更多