2012-03-26 134 views
11

我在目录projects/myRepo有一个子模块的git存储库,我想将目录重命名为projects/my-repo如何使用子模块重命名git存储库?

根据this的问题可以简单地用mv完成。但是,在与子模块的git回购不断告诉我

致命的:不是git仓库:项目/ myRepo/git的/路径/到/ submodule```

即使git status

子模块的配置:

[submodule "path/to/submodule"] 
    path = path/to/submodule 
    url = https://github.com/user/projectName.git 

莫名其妙的辅助模块中的“内部通道”没有更新?有没有办法告诉git更新这些子模块路径?

+0

这应该只是工作。 .gitmodule文件中有什么? – Weston 2012-03-26 20:29:40

+0

@韦斯顿,请看我更新的问题。但即使从.gitmodules文件中删除此部分,也会出现相同的错误。当我将父目录重命名为原始名称时,git不再投诉。 – schmunk 2012-03-26 21:51:31

+0

嗯..我只是试图做一个子模块的测试回购。然后我克隆它,初始化并更新克隆中的子模块,然后使用mv重命名克隆。所有似乎都按预期工作......? – Weston 2012-03-27 06:54:25

回答

0

由于Weston的测试(克隆,init和在克隆回购的子模块的更新)曾重命名该目录包括所述子模块时如预期,我怀疑的东西必须在原来的Git的子模块.git本身都是错误的回购子模块。

您可以在该第一个子模块中比较/查找任何引用“myRepo”的文件。
您还可以比较两个子模块的内容(您尝试重命名的第一个,以及第二个包含在您所克隆的回购库中的内容)

+0

请注意这里的名称..我,而不是OP,做了上述测试。 :-)但是也许OP应该做相同的测试来验证他的安装。 – Weston 2012-03-27 09:31:53

+0

@Weston对不起,当我写这篇文章的时候我并没有完全清醒;) – VonC 2012-03-27 11:10:02

+0

我无法重现这个问题,所以我想我在重构项目时搞砸了一些东西。如果我有时间,我会调查破损的回购,直到那时我创建了一个新的克隆,这工作正常。谢谢你的帮助。 – schmunk 2012-03-27 22:22:10

2

更改我的项目目录后,我也有同样的错误。我有一个iOS 6 XCode 4项目,但这并不重要。

对于每个子模块,您需要更改它认为其所在的绝对路径。路径在该子模块的.git文件中设置。 .git在子模块中是文件,而不是目录在标准git目录中。

对于每个子模块,更改.git文件中的.gitdir行。这里是我的项目的例子:

文件:/path/to/project/submodules/RestKit/.git

gitdir之前:/path/to/project//.git/modules/子模块/ RestKit

gitdir:/path/to/project//.git/modules/submodules/RestKit

+2

我还必须在.git/modules/path /中将我的** worktree **路径更改为/ project/submodules/RestKit/config – tuxinaut 2013-05-30 12:52:24

3

我没有经验,完全一样的行为。我设法通过删除带有子模块的目录来修复它,使用正确的名称将它们重新创建为空目录,然后运行git submodule update --init以重新初始化它们。现在全部修好了。可能是一些权限问题(我从早期的备份中检索这些目录,并且对它们的权限有时很奇怪)。

0

今天我有同样的问题重命名的子模块,最后我通过以下步骤固定它:

假定旧的模块名称是old/module和新的new/module/path

  1. 在回购(repo_root)的根,mv old/module new/module/path
  2. 转到.git/modules
    1. mv old/module new/module/path(必要时首先创建文件夹)
    2. 更改new/module/name/config:更新worktree条目。它应该是从这个配置文件,以repo_root/new/module/path
  3. 的相对路径去repo_root和编辑new/module/path/.git,从这个文件改变gitdir的相对路径至主回购repo_root/.git/modules/new/module/path
  4. 变化.git/config:找到这一行包含[submodule "old/module"]和更新到[submodule "new/module/path"]
相关问题