gitリポジトリの名前を変更することは、より具体的には、プロジェクトを保持する最上位のフォルダーであるため、非常に難しいとは思いません。はい、いくつかのサブモジュールを含むプロジェクトですが、名前を変更する必要があるのは最上位のフォルダーであり、サブモジュールフォルダーではありません。Gitは、そのサブモジュールメカニズムにいくつかの奇妙な絶対パスを記録しているようです。
それを仮定しましょう
- すべてのプロジェクトはにあります
/tmp。 - あなたはとを持ってい
proj_masterますproj_mod。 - クローンを作成してから、その中のサブモジュールとして
porj_masterクローンをproj_ALL作成します。prom_mod - 名前をに変更
proj_ALLしproj_onebillionます。その後、黒魔術が起こります。
次の手順で、前述の問題を再現します。私が使用しているgitのバージョンは次のとおりです。
$ git --version
git version 1.7.9.5
初期化し
proj_masterます。$ cd /tmp $ mkdir proj_master; cd proj_master $ git init . $ touch README $ git add .; git commit -m "hello proj_master"初期化し
proj_modます。$ cd /tmp $ mkdir proj_mod; cd proj_mod $ git init . $ touch README $ git add .; git commit -m "hello proj_mod"クローンを作成し、サブモジュールとして
proj_masterクローンを作成します。proj_ALLproj_mod$ cd /tmp $ git clone proj_master proj_ALL $ cd proj_ALL $ git submodule add /tmp/proj_mod ./mod $ git add .; git commit -m "hello proj_ALL" $ git status % Everything is OK.名前をに変更
proj_ALLしproj_onebillionます。致命的なエラーが発生しました。$ cd /tmp $ mv proj_ALL proj_onebillion $ cd proj_onebillion $ git status fatal: Not a git repository: /tmp/proj_ALL/.git/modules/mod
注意すべき点の1つは.git、サブモジュールディレクトリ内のファイルです。
$ cat /tmp/proj_ALL/mod/.git
gitdir: /tmp/proj_ALL/.git/modules/mod
ええ、絶対的な道です。初めて、gitがトップレベルのリポジトリフォルダーの範囲外の何かを認識していることに気付きました。
それでおしまい。サブモジュールフォルダーではなく、トップレベルのプロジェクトフォルダーの名前を変更することをもう一度繰り返します。サブモジュールフォルダの名前を変更しようとしたschmuckの質問を確認したので、私の問題にはあまり役立たないようです。
以前に読んだはずの何かを見逃してしまった場合は、お詫び申し上げます。すべての人に、どんなアドバイスも歓迎します。