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_ALL
proj_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の質問を確認したので、私の問題にはあまり役立たないようです。
以前に読んだはずの何かを見逃してしまった場合は、お詫び申し上げます。すべての人に、どんなアドバイスも歓迎します。