gpt4 book ai didi

git - 清理克隆上的 git 子模块的工作流程是什么?

转载 作者:IT王子 更新时间:2023-10-29 01:29:21 25 4
gpt4 key购买 nike

有关如何“本地”删除子模块的有用答案 - How do I remove a submodule?

但是我遇到了一个问题,我在多台机器上克隆了我的存储库。二 我一个月只工作一两次。因此,当我更新这些分支时,虽然不再跟踪子模块,但文件仍在工作分支上以及 .git/modules 中。不止一次我不小心 checkin 了一些。在其他情况下,由于存在这些不需要的文件/目录,我的构建失败了。

我想我可以保留一份要删除的东西的列表 - 但这似乎不对 - 另一个人会如何删除并且我没有 git 之外的信息要删除什么?

那么清理克隆的建议方法是什么?

更新

对我来说 git --version 返回 git version 2.18.0 这似乎是最新的(它是 2018-09-01)。

我添加了一个可重现的例子。

设置

mkdir parent
cd parent
git init
git submodule add https://github.com/jakesgordon/javascript-tetris.git
git commit -am add

cd ..
git clone parent clone
cd clone
git submodule update --init

现在这两个目录都包含带有 checkout 文件的子模块 javascript-tetris/.gitmodules 包含子模块。

当我做的时候

cd parent
git rm javascript-tetris
git commit -am delete

在父目录中,javascript-tetris 消失了,.gitmodules 中的条目被删除。但是仍然有一个填充的 .git/modules/javascript-tetris 目录。

在克隆方面:

git pull

给出警告:warning: unable to rmdir 'javascript-tetris': Directory not empty。并且目录仍然存在,.git/modules/javascript-tetris 仍然存在。

最佳答案

这对你有帮助吗?

git clean -xfd
git submodule foreach --recursive git clean -xfd
git reset --hard
git submodule foreach --recursive git reset --hard
git submodule update --init --recursive

更新

要删除子模块,您需要:

  • 从 .gitmodules 文件中删除相关部分。
  • 暂存 .gitmodules 更改 git add .gitmodules
  • 从 .git/config 中删除相关部分。
  • 运行 git rm --cached path_to_submodule(没有尾部斜线)。
  • 运行 rm -rf .git/modules/path_to_submodule(没有尾部斜线)。
  • 提交 git commit -m "Removed submodule "
  • 删除现在未跟踪的子模块文件 rm -rf path_to_submodule

    Source

关于git - 清理克隆上的 git 子模块的工作流程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51963783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com