Git スーパープロジェクト内の Git サブモジュールのディレクトリ名を変更したいと思います。
ファイルに次のエントリがあるとします.gitmodules
。
[submodule ".emacs.d/vimpulse"]
path = .emacs.d/vimpulse
url = git://gitorious.org/vimpulse/vimpulse.git
ディレクトリを削除せず.emacs.d/vimpulse
に移動するには何を入力すればよいですか(説明付き).emacs.d/vendor/vimpulse
ここそしてここ) を追加してから再度追加します。
Git はサブモジュールタグにパス全体を必要とするのか
[submodule ".emacs.d/vimpulse"]
またはサブプロジェクトの名前だけを保存することも可能ですか?
[submodule "vimpulse"]
ベストアンサー1
Gitの新しいバージョン
Git はサブモジュールの移動をネイティブでサポートするようになりました。
git 1.8.5 以降は
git mv old/submod new/submod
期待通りに動作し、すべての配管作業を自動的に行います。サブモジュールの移動に関する修正が含まれているため、git 1.9.3 以降を使用することをお勧めします。
gitの古いバージョン
コメントで述べたように、この回答は古いバージョンの git で必要な手順について言及しています。
このプロセスはサブモジュールを削除する方法と似ています(サブモジュールを削除するにはどうすればよいですか?):
サブモジュールのパスを適切に編集
.gitmodules
・変更し、 でインデックスに配置しますgit add .gitmodules
。必要に応じて、サブモジュールの新しい場所の親ディレクトリを作成します (
mkdir -p new/parent
)。すべてのコンテンツを古いディレクトリから新しいディレクトリ (
mv -vi old/parent/submodule new/parent/submodule
) に移動します。Git がこのディレクトリ (
git add new/parent
) を追跡していることを確認します。で古いディレクトリを削除します
git rm --cached old/parent/submodule
。ディレクトリ
.git/modules/old/parent/submodule
とそのすべてのコンテンツを に移動します.git/modules/new/parent/submodule
。ファイルを編集し
.git/modules/new/parent/config
、ワークツリー項目が新しい場所を指していることを確認します。この例では、 になります。通常、その場所の直接パスには 以上のディレクトリがworktree = ../../../../../new/parent/module
2 つあるはずです。..
ファイルを編集し
new/parent/module/.git
、その中のパスがメイン プロジェクト フォルダー内の正しい新しい場所を指していることを確認します.git
。この例では、 ですgitdir: ../../../.git/modules/new/parent/submodule
。git status
その後の出力は次のようになります。# On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: .gitmodules # renamed: old/parent/submodule -> new/parent/submodule #
最後に、変更をコミットします。