切换分支时 git clean 不会删除添加到分支的子模块

2024-01-09

切换分支时如何摆脱子模块。我不明白为什么 git clean 说它删除了子模块但没有。这是一个错误吗?以下是复制的剪切和粘贴步骤。

git --version
git version 1.7.8.4

git init submod
cd submod
echo "This is a submodule" > README.txt
git add .
git commit -m "Initial commit"
cd ..
git init prog
cd prog
echo "This is a program" > README.txt
git add .
git commit -a -m "Initial commit"
git checkout -b topic1
git submodule add ../submod
git commit -m "Added submodule"

git checkout master
#warning: unable to rmdir submod: Directory not empty
#Switched to branch 'master'

git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       submod/
#nothing added to commit but untracked files present (use "git add" to track)

git clean -fd
#Removing submod/

git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       submod/
#nothing added to commit but untracked files present (use "git add" to track)

这不是错误,而是已记录的行为。从man git-clean:

如果未跟踪的目录由不同的 git 存储库管理,则默认情况下不会将其删除。

The submod目录不同git存储库;如果你想删除它,Use -f option twice if you really want to remove such a directory.

git clean -f -f -d submod does remove submod。请参阅下面的我的步骤(几乎相同;不同git version和硬编码的submodule路径,因为否则git假人吐口水)。


Steps


$ git --version
git version 1.7.5.4 # Note, different git-version. 

制作两个存储库


git init submod
cd submod
echo "This is a submodule" > README.txt
git add .
git commit -m "Initial commit"
cd ..
git init prog
cd prog
echo "This is a program" > README.txt
git add .
git commit -a -m "Initial commit"

Add submod as a git submodule in topic1 branch.


git checkout -b topic1
git submodule add /Users/simont/sandbox/SOTESTING/Subdir-testing/submod
git commit -m "Added submodule"

现在是有趣的部分。


$ git checkout master
warning: unable to rmdir submod: Directory not empty
Switched to branch 'master'

git status
# On branch master
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#       submod/
#nothing added to commit but untracked files present (use "git add" to track)

尝试git-clean, then actually git-clean.


git clean -fd
#Removing submod/

git status
# On branch master
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#       submod/
#nothing added to commit but untracked files present (use "git add" to track)

$ # As we can see, we haven't actually removed anything yet. 
$ ls
README.txt  submod

$ git clean -f -f -d submod
Removing submod/

$ ls
README.txt

$ git status
# On branch master
nothing to commit (working directory clean)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

切换分支时 git clean 不会删除添加到分支的子模块 的相关文章

  • Git:列出应该被忽略但没有被忽略的文件

    Note 这不是关于修复git rm r cached git add 我实际上希望能够只列出文件 Why 有时当我编辑我的 gitignore并忘记上面的命令 我最终得到的文件仍然在存储库中 但应该被忽略 What 我想要完成的是编写一个
  • 如何在项目提交历史中找到已删除的文件?

    曾几何时 我的项目中有一个文件 我现在希望能够获取它 问题是 我不知道我什么时候删除了它 也不知道它在哪条路径上 当该文件存在时 如何找到该文件的提交 如果您不知道可以使用的确切路径 git log all full history the
  • “*text=auto”和“*text=auto eol=lf”有什么区别?

    我正在读关于 gitattributes文件和强制行结尾的规则some https rehansaeed com gitattributes best practices line endings教程是这样写的 text auto and
  • 创建一个包含另一个 git 存储库的 git 存储库

    我创建了一个裸 git 存储库 我们称之为存储库 1 并克隆了它 在克隆 repo 2 中 我创建了几个文件夹 其中我决定创建一个 git repo repo 3 当我提交到 repo 2 时 一切都按预期运行 除了 repo 3 被忽略
  • Intellij Idea可以自动阶段更改吗

    经过几天的任务处理后 我决定看看已经完成了哪些工作git status来自 Git Bash 有些文件在Changes to be committed list 有些在Changes not staged for commit 有趣的是 我
  • Git 克隆已经是克隆的存储库

    做这个手术有什么副作用吗 git clone已经是另一个远程存储库的克隆的存储库 没有副作用 但您应该准确了解克隆存储库时会发生什么 一些理论 问题 是 当您 以正常方式 克隆存储库时 即在调用时没有调整任何时髦的旋钮git clone y
  • 递归地将整个文件夹添加到存储库

    我正在尝试向 GitHub 上的 master 分支添加一个分支 并将一个文件夹推送到该分支上 分支的文件夹结构如下所示 Social App Source Code Dev Trunk Social App 以及所有源代码文件都在最后一个
  • 如何将 HEAD 移回之前的位置? (分离头)和撤消提交

    在 Git 中 我试图做一个squash commit通过合并到另一个分支然后重置HEAD通过以下方式前往上一个地点 git reset origin master 但我需要走出这一步 如何将 HEAD 移回之前的位置 我有 SHA 1 片
  • 如何给 Git 控制台着色?

    我最近看到gitWindows 中的控制台是彩色的 例如绿色表示添加 红色表示删除等 我如何为我的颜色上色git这样的控制台 为了安装它 我使用了以下命令 sudo apt get install git core As noted htt
  • 如何恢复已删除的文件[重复]

    这个问题在这里已经有答案了 可能的重复 在 Git 存储库中恢复已删除的文件 https stackoverflow com questions 953481 restore a deleted file in a git repo 如何恢
  • 如果检测到更改中的特定短语,如何阻止 git commit?

    我注意到开发人员倾向于做的一些模式 例如使用以下代码提交 javascript 测试fdescribe or fit留在其中 这意味着只有一个测试 套件将运行 通常是在审查阶段发现的 但最好尽早发现这些小事情 想知道是否有一种方法可以配置
  • Git 从不同的存储库中提取分支

    我当前的存储库中只有几个文件 我想合并来自不同存储库的远程分支 从中拉出并合并一个分支github com username code git 分支装载机 然后从中拉出并合并一个分支github com username code git
  • 将环境变量从 fastlane 传递到 Xcode 构建阶段脚本

    是否可以 如果可以 如何 将环境变量从运行 fastlane 的脚本传递到 Xcode 运行脚本阶段 我的最终目标是在运行脚本阶段读取当前的 git 分支名称 我们的 CI 由 Team Foundation Server 运行 它执行以下
  • 是否可以在 Git 项目的所有分支中执行“grep 搜索”?

    是否可以运行git grep在 Git 控件源项目的所有分支中 或者还有其他命令要运行吗 问题 如何在 Git 历史记录中 grep 搜索 提交的代码 https stackoverflow com q 2928584 6309 建议 gi
  • github 网络图查看器的替代品? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我单击 github 上的 forks 按钮时 我想获得一个摘要 这就是我使用网络图查看器获得的结果 但它并不完全理想 我会做什么ide
  • Emacs shell:保存提交消息

    我几天前开始使用 emacs 在 emacs shell M x shell 中使用 git 时遇到问题 当我 git commit 或 git commit amend 时 它会打开 vim 来编辑并保存提交消息 我对此表示同意 但我找不
  • 在 $git push -u origin main 命令之后,Git bash 不请求任何身份验证,实际上什么也不做

    当我尝试将代码上传到 github 时 以下是我在 Git Bash 终端中执行的步骤 当我尝试使用将代码推送到 github 时 git push u origin main光标移动到下一行并持续闪烁 但不执行任何操作 git remot
  • 如何在git中定义ESC字符?

    我想在 git 输出中使用着色 例如 git log decorate color 当我发出这个命令时 我得到的输出看起来像ESC 1 32m where ESC是反色的 在我看来 这是一个有效的转义序列 除了 033必须发送而不是字符E
  • 从 svn 到 git,移动了主干

    我正在尝试将 svn 存储库切换到 git 这是一个旧的存储库 以前的维护者之一为每个新版本移动了主干 例如 以前的存储库位于 svn ssh svn mycompany com project release 1 trunk 现在 我们当
  • AngularJs:显示来自 git 或 Bower 的版本号

    我创建了一个 Angular 应用程序 我想在屏幕上显示应用程序的当前版本号 目前我已将其实现为常量 application constant constants VERSION 1 1 2 但这需要我在每个新版本上更新常量 我使用 Bow

随机推荐

  • Django 模板的依赖文件放在哪里?

    我的 Django 模板使用了很多相关的东西 图像 样式表等 我应该把这些文件放在哪里 或者我应该如何在模板本身中引用它们 目前我正在使用开发服务器 我知道这是很常见的事情 但我无法真正弄清楚 我把它们放在一个名为的文件夹中static 位
  • 如何更改 Castor 映射以从 XML 输出中的元素中删除“xmlns:xsi”和“xsi:type”属性?

    如何更改 Castor 映射
  • Excel 公式优化

    我不是 Excel 专家 经过一些研究 我想出了这个公式来查看不同时间的两组相同数据 然后 它会显示最新数据列表中但不在旧列表中的新条目 这是我的公式 IF ROWS L 4 L8 lt SUMPRODUCT ISNA MATCH E 1
  • ViewModel 中的 INotifyPropertyChanged 与 DependencyProperty

    在模型 视图 视图模型架构 WPF 应用程序中实现 ViewModel 时 如何使其可数据绑定似乎有两个主要选择 我见过使用的实现DependencyProperty对于视图将要绑定的属性 我已经看到 ViewModel 实现INotify
  • 将参数传递给 jQuery“加载”

    我的页面上有一些脚本 divMenuHolder load menu html 不过 我还需要能够传递一些在 menu html 页面上起作用的参数 我尝试过以下方法 divMenuHolder load menu html opt1 te
  • 无需离开页面/网站即可提交外部表单

    我在网站上查找了这个问题的答案 但没有找到我需要的东西 这很接近 除了它实际上没有提交表单 防止表单重定向或提交时刷新 https stackoverflow com questions 1263852 prevent form redir
  • 全屏显示窗口

    如何在全屏播放电影时显示窗口而不退出电影播放器 的全屏模式 我只是想让窗口出现在电影的顶部 我知道这是可能的 因为雅虎信使每次显示皮尔逊已登录或退出时都会执行此操作 并且我确信还有其他程序也可以执行此操作 但我现在不记得了 它可以在 C C
  • Laravel - 使用外部请求时 POST 数据为空

    我是 Laravel 的新手 我正在尝试实现一个简单的 REST API 我已经实现了控制器 并通过单元测试进行了测试 我的问题是 POST 请求 通过测试 Input json 有数据 通过外部 REST 客户端返回 null 这是单元测
  • 使用m2e插件在eclipse中Maven项目依赖错误(适用于maven)

    我正在 eclipse 中使用 m2e 插件开发 java maven 项目 我更新了我的系统 我的jvm从icedtea bin 6 1 11 4更新到icedtea bin 6 1 11 5 Eclipse 现在在我的 pom 文件中输
  • 学习 UI 和网站设计设计 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么没有与unicode“箭头指向右侧然后向上弯曲”等效的向左指向?

    AFAICT 来自http unicode table com en sets arrows symbols http unicode table com en sets arrows symbols 没有与 unicode 等价的从左向上
  • 创建像 C# 属性一样的 javascript 属性

    是否可以在 javascript 对象上创建一个行为类似于 C 中的属性的属性 例子 我使用 dojo 创建了一个自动调整大小的文本区域小部件 为了从我的小部件中获取 value 属性 我连接了 onchange 事件 并且每次文本区域的值
  • 适用于 HEVC 的 Android MediaCodec

    我正在研究使用 android MediaCodec 类来解码 HEVC 有这样做的项目示例吗 目前我使用以下配置解码器 AMEDIAFORMAT KEY MIME video hevc AMEDIAFORMAT KEY MAX HEIGH
  • 使用 iPhone SDK 中的 MFMailComposer 附加纯文本文件

    我一直在尝试使用 MFMailComposer 发送其中包含加密数据的文本文件 问题是当电子邮件到达收件箱时我的附件永远不会显示 相反 一行 br br 总是存在 我假设这与 mime 类型有关 并且接收者邮件服务器不知道如何读取数据 但我
  • C++ 读取缓冲区大小

    假设该文件的长度为 2又 1 2 块 块大小为 1024 aBlock 1024 char buffer new char aBlock while myFile eof myFile read buffer aBlock do more
  • 如何与表单一起验证和创建相关对象

    我试图在使用表单创建对象基础对象时验证相关对象 ForeignKey 相关对象可能存在也可能不存在 下面我使用 MPTT 但这是一个一般的外键问题 我有一个这样的模型 model class MyMPTTModel models Model
  • 为什么 cython 内存视图不能被 pickle?

    我有一个使用内存视图数组的 cython 模块 即 double foo 我想使用多处理并行运行该模块 但是我收到错误 PicklingError Can t pickle
  • 在 c++/c++11 中测试“POD-ness”?

    我有一些代码 它采用打包的 POD 结构 类并将其复制到内存块中 struct A int a int b a memcpy mymemoryblock void a sizeof A later I get a reply and mem
  • 从数组中访问唯一值对而无需重复自己

    我正在尝试访问unique以随机顺序从数组中获取值对 在必要之前不重复自己 例如 如果我有一个数组集 A B C D 通常为偶数个项目 但最多 20 个 那么第一次通过时我可能会将 A B 和 C D 配对 但我想保证 下次我这样做时 我会
  • 切换分支时 git clean 不会删除添加到分支的子模块

    切换分支时如何摆脱子模块 我不明白为什么 git clean 说它删除了子模块但没有 这是一个错误吗 以下是复制的剪切和粘贴步骤 git version git version 1 7 8 4 git init submod cd subm