从 git 版本 1.9.3 开始,删除 git 子模块的方法是什么?
What is the way to remove a git submodule as of git version 1.9.3?
从 git 版本 1.9.3 (Apple Git-50) 开始 mac 如何删除 git 子模块?我正在阅读很多过时的信息,许多开发人员告诉我他们不会工作。目前的方式是什么?
git deinit pathToSubModule
会成功吗?
我认为可行的步骤是 here,但评论说它们行不通。
让我解释一下我目前的情况和我需要完成的事情。我已经安装了 the Quick repository 并将其作为子模块添加到我的项目中。此代码已签入,其他人正在使用它。我现在需要做的是 fork 相同的 Quick 存储库并将其托管在我公司拥有的更安全的 github 上(因此完全是另一个私人 git中心)。分叉后,我想将该分叉添加为 git 子模块,并让它替换我之前安装的当前 Quick 子模块。
更新:我读到以下是最新git版本的正确方法,请确认?
To remove a submodule added using:
git submodule add blah@blah.com:repos/blah.git lib/blah
Run:
git rm lib/blah
That's it.
For old versions of git (circa ~1.8.5) use:
git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah
你有 git submodule deinit
git submodule deinit <asubmodule>
git rm <asubmodule>
# Note: asubmodule (no trailing slash)
# or, if you want to leave it in your working tree
git rm --cached <asubmodule>
rm -rf .git/modules/<asubmodule>
deinit
Un-register the given submodules, i.e. remove the whole submodule.$name
section from .git/config
together with their work tree.
Further calls to git submodule update
, git submodule foreach
and git submodule sync
will skip any unregistered submodules until they are initialized again, so use this command if you don’t want to have a local checkout of the submodule in your work tree anymore.
If you really want to remove a submodule from the repository and commit that use git rm
instead.
If --force
is specified, the submodule’s work tree will be removed even if it contains local modifications.
如何安全地删除子模块。
(添加到 )
列出并找到 .gitmodules
文件中的子模块部分。通过终端 vi .gitmodules
说。示例:
[submodule "submodules/afnetworking"]
path = submodules/afnetworking
url = https://github.com/CompanyName/afnetworking.git
子模块可以与本地分支一起使用。对于较长的 运行 项目,代码可能与原始 repo 不同,并且可能有一些修复。验证子模块代码是否在项目过程中经历了更改是个好主意。示例:查看日志,它是否指向 master
分支或某个本地分支。探索 git 日志以查找通过终端完成的修改。通常这些存储在一个目录下,我的示例在 submodules
目录下。
User$ cd submodules/afnetworking
User$ git log
从 .gitmodules 中删除子模块部分,保存文件。示例:git status
应仅显示修改后的
modified: .gitmodules
使用 git add .gitmodules
进行更改。
列出并找到 .git/config
文件中的子模块部分。通过终端 vi .git/config
说。示例:
[submodule "submodules/afnetworking"]
url = https://github.com/CompanyName/afnetworking.git
删除 git 缓存 sobmodule 文件。 运行 git rm --cached submodules/afnetworking
(没有尾部斜杠)将成功删除它。示例:
User$ git rm --cached submodules/afnetworking
rm 'submodules/afnetworking' <-- terminal output
用rm -rf .git/modules/...
删除.git
目录下的子模块文件。之后用git status
确认。
User$ rm -rf .git/modules/submodules/afnetworking/
User$ git status
On branch feature/replace-afnetworking-submodule-with-pod
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: .gitmodules
deleted: submodules/afnetworking
Untracked files:
(use "git add <file>..." to include in what will be committed)
submodules/afnetworking/
提交更改。之后用 git status
确认。
User$ git commit -m "Remove submodule afnetworking"
[feature/replace-afnetworking-submodule-with-pod 70e239222] Remove submodule afnetworking
2 files changed, 4 deletions(-)
delete mode 160000 submodules/afnetworking
User$ git status
On branch feature/replace-afnetworking-submodule-with-pod
Untracked files:
(use "git add <file>..." to include in what will be committed)
submodules/afnetworking/
nothing added to commit but untracked files present (use "git add" to track)
删除未跟踪的子模块文件。
User$ rm -rf submodules/afnetworking
从 Xcode 项目中删除引用。构建、修复编译和运行时问题。
我正在使用 Git 版本 2.16.2,git rm
大部分情况下都能很好地完成工作:
git rm path-to-submodule
您可以使用 git status
和 git diff --cached
验证这会取消初始化子模块并自动修改 .gitmodules
。与往常一样,您需要提交更改。
然而,即使子模块已从源代码管理中删除,.git/modules/path-to-submodule
仍包含子模块存储库,.git/config
包含其 URL,因此您仍然需要手动删除它们:
git config --remove-section submodule.path-to-submodule
rm -rf .git/modules/path-to-submodule
保留子模块存储库和配置是有意的,以便您可以撤消删除操作,例如git reset --hard
.
从 git 版本 1.9.3 (Apple Git-50) 开始 mac 如何删除 git 子模块?我正在阅读很多过时的信息,许多开发人员告诉我他们不会工作。目前的方式是什么?
git deinit pathToSubModule
会成功吗?
我认为可行的步骤是 here,但评论说它们行不通。
让我解释一下我目前的情况和我需要完成的事情。我已经安装了 the Quick repository 并将其作为子模块添加到我的项目中。此代码已签入,其他人正在使用它。我现在需要做的是 fork 相同的 Quick 存储库并将其托管在我公司拥有的更安全的 github 上(因此完全是另一个私人 git中心)。分叉后,我想将该分叉添加为 git 子模块,并让它替换我之前安装的当前 Quick 子模块。
更新:我读到以下是最新git版本的正确方法,请确认?
To remove a submodule added using:
git submodule add blah@blah.com:repos/blah.git lib/blah
Run:
git rm lib/blah
That's it.
For old versions of git (circa ~1.8.5) use:
git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah
你有 git submodule deinit
git submodule deinit <asubmodule>
git rm <asubmodule>
# Note: asubmodule (no trailing slash)
# or, if you want to leave it in your working tree
git rm --cached <asubmodule>
rm -rf .git/modules/<asubmodule>
deinit
Un-register the given submodules, i.e. remove the whole
submodule.$name
section from.git/config
together with their work tree.Further calls to
git submodule update
,git submodule foreach
andgit submodule sync
will skip any unregistered submodules until they are initialized again, so use this command if you don’t want to have a local checkout of the submodule in your work tree anymore.If you really want to remove a submodule from the repository and commit that use
git rm
instead.If
--force
is specified, the submodule’s work tree will be removed even if it contains local modifications.
如何安全地删除子模块。
(添加到 )
列出并找到
.gitmodules
文件中的子模块部分。通过终端vi .gitmodules
说。示例:[submodule "submodules/afnetworking"] path = submodules/afnetworking url = https://github.com/CompanyName/afnetworking.git
子模块可以与本地分支一起使用。对于较长的 运行 项目,代码可能与原始 repo 不同,并且可能有一些修复。验证子模块代码是否在项目过程中经历了更改是个好主意。示例:查看日志,它是否指向
master
分支或某个本地分支。探索 git 日志以查找通过终端完成的修改。通常这些存储在一个目录下,我的示例在submodules
目录下。User$ cd submodules/afnetworking User$ git log
从 .gitmodules 中删除子模块部分,保存文件。示例:
git status
应仅显示修改后的modified: .gitmodules
使用
git add .gitmodules
进行更改。列出并找到
.git/config
文件中的子模块部分。通过终端vi .git/config
说。示例:[submodule "submodules/afnetworking"] url = https://github.com/CompanyName/afnetworking.git
删除 git 缓存 sobmodule 文件。 运行
git rm --cached submodules/afnetworking
(没有尾部斜杠)将成功删除它。示例:User$ git rm --cached submodules/afnetworking rm 'submodules/afnetworking' <-- terminal output
用
rm -rf .git/modules/...
删除.git
目录下的子模块文件。之后用git status
确认。User$ rm -rf .git/modules/submodules/afnetworking/ User$ git status On branch feature/replace-afnetworking-submodule-with-pod Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: .gitmodules deleted: submodules/afnetworking Untracked files: (use "git add <file>..." to include in what will be committed) submodules/afnetworking/
提交更改。之后用
git status
确认。User$ git commit -m "Remove submodule afnetworking" [feature/replace-afnetworking-submodule-with-pod 70e239222] Remove submodule afnetworking 2 files changed, 4 deletions(-) delete mode 160000 submodules/afnetworking User$ git status On branch feature/replace-afnetworking-submodule-with-pod Untracked files: (use "git add <file>..." to include in what will be committed) submodules/afnetworking/ nothing added to commit but untracked files present (use "git add" to track)
删除未跟踪的子模块文件。
User$ rm -rf submodules/afnetworking
从 Xcode 项目中删除引用。构建、修复编译和运行时问题。
我正在使用 Git 版本 2.16.2,git rm
大部分情况下都能很好地完成工作:
git rm path-to-submodule
您可以使用 git status
和 git diff --cached
验证这会取消初始化子模块并自动修改 .gitmodules
。与往常一样,您需要提交更改。
然而,即使子模块已从源代码管理中删除,.git/modules/path-to-submodule
仍包含子模块存储库,.git/config
包含其 URL,因此您仍然需要手动删除它们:
git config --remove-section submodule.path-to-submodule
rm -rf .git/modules/path-to-submodule
保留子模块存储库和配置是有意的,以便您可以撤消删除操作,例如git reset --hard
.