将现有的未版本化目录添加为 git 子模块(同时尽可能避免移动和复制)
add existing unversioned directory as git submodule in place (while avoiding moving and copying as much as possible)
我正在尝试将 git 项目克隆的未版本化子目录转换为子模块。
直接的方法是将其移出,创建一个项目并将该项目重新添加为子模块。
有没有办法做到这一点,例如避免在本地移动、复制并从服务器再次传输大部分数据?
示例:
我有一个名为“test”的 git 项目克隆到目录“test”,其中唯一的版本控制文件是 readme.md。 Hoewver,有一个巨大的子目录 testsm,我想为其创建一个 git 项目“testsm”,然后将其作为子模块添加到文件夹“test/testsm”中。
/test
/readme.md (versioned)
/testsm/* (yet unversioned)
您可以使用 git submodule add
添加现有的 git 存储库。
对于您的情况,您首先需要在 testsm
目录中使用 git init
创建一个新的 git 存储库。您还需要至少创建一个提交。
你将拥有这样的结构:
base
`- .git
`- readme.md
`- testsm
`- .git
`- other files...
一旦你在那里,你可以添加子模块:
git submodule add ./testsm
git commit # To actually commit the changes
以下步骤可选。
如果你需要设置上游url,你可以使用git submodule set-url
命令将子模块URL设置为你想要的。
您还可以使用 git submodule absorbgitdirs
.
将 testsm/.git
存储库移动到父 .git
存储库
我正在尝试将 git 项目克隆的未版本化子目录转换为子模块。 直接的方法是将其移出,创建一个项目并将该项目重新添加为子模块。 有没有办法做到这一点,例如避免在本地移动、复制并从服务器再次传输大部分数据?
示例:
我有一个名为“test”的 git 项目克隆到目录“test”,其中唯一的版本控制文件是 readme.md。 Hoewver,有一个巨大的子目录 testsm,我想为其创建一个 git 项目“testsm”,然后将其作为子模块添加到文件夹“test/testsm”中。
/test
/readme.md (versioned)
/testsm/* (yet unversioned)
您可以使用 git submodule add
添加现有的 git 存储库。
对于您的情况,您首先需要在 testsm
目录中使用 git init
创建一个新的 git 存储库。您还需要至少创建一个提交。
你将拥有这样的结构:
base
`- .git
`- readme.md
`- testsm
`- .git
`- other files...
一旦你在那里,你可以添加子模块:
git submodule add ./testsm
git commit # To actually commit the changes
以下步骤可选。
如果你需要设置上游url,你可以使用git submodule set-url
命令将子模块URL设置为你想要的。
您还可以使用 git submodule absorbgitdirs
.
testsm/.git
存储库移动到父 .git
存储库