Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在合并和提交过程中意外删除子模块文件夹;如何重新添加它们而不恢复和再次完全合并

在合并和提交过程中意外删除子模块文件夹;如何重新添加它们而不恢复和再次完全合并
EN

Stack Overflow用户
提问于 2022-05-08 23:47:13
回答 1查看 157关注 0票数 0

我与包含子模块的分支进行了git合并,并忘记为某些子模块添加文件夹(或者在合并期间在解决冲突时意外删除它们)。

更新子模块时出现错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pathspec '...' did not match any file(s) known to git.

我想我可以手动为子模块添加空文件夹并进行修改,但这似乎是不可能的。

是否有一种方法可以添加所需的文件夹,而不必还原所有内容并再次合并?

下面是我所做的工作(我使用了tortoisegit,但是这个脚本复制了完全相同的行为;问题并不是tortoisegit特定的,tortoisegit只是使不提交所有更改的文件变得更容易,即我的例子中的子模块目录,这里是用git rm -f test2__模仿的)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm -rf test2
mkdir test2
cd test2
git init .

echo 2 > test2.cpp
git add .
git commit -a -m 1
git branch -m main

cd ..


rm -rf test
mkdir test
cd test
git init .

echo 1 > test.cpp
git add .
git commit -a -m a1
git branch -m a
git branch b

git submodule add -- ../test2 test2
git commit -m a2

git checkout b
rm -r test2
echo 12 > test.cpp
git commit -a -m b2

git checkout a
echo 13 > test.cpp
git commit -a -m a3

git checkout b

git merge a
echo 123 > test.cpp
git add test.cpp
git rm -f test2
git commit -m b3

git submodule update --init --recursive -- "test2"

演示

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-09 02:22:08

好的,通过复制器,我可以重现这个问题。最后的合并提交(在test目录存储库中的分支test2上)现在根本没有子模块test2,因为解析步骤删除了它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git status
On branch b
nothing to commit, working tree clean
$ git submodule status
$ cat .gitmodules
$

所以现在我们想把子模块放回去。我们可以像往常一样使用git submodule add来完成这个任务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git submodule add -- ../test2 test2
A git directory for 'test2' is found locally with remote(s):
  origin    [...]/test2
If you want to reuse this local git directory instead of cloning again from
  [...]/test2
use the '--force' option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the '--name' option.

这是一个现代的,但不是最新的Git;旧版本的Git在这里可能什么都不说,可能会默默地接受这个尝试,但是既然我有这个版本,我现在遵循git submodule add打印的建议并使用--force

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git submodule add --force -- ../test2 test2
Reactivating local git directory for submodule 'test2'.
$ git status
On branch b
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   .gitmodules
        new file:   test2

$ git submodule status
 b603f2eb4c83459de3d0796a89f1ab8bc19e1449 test2 (heads/main)

要“更新”合并(而不是添加到合并中的新提交),我们现在可以像往常一样使用git commit --amend。请注意,这确实只是一个新的提交。--amend的特别之处在于使新提交的父级与当前提交的父级相同,在git log --all --decorate --oneline --graph中我们可以看到这一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git log --all --decorate --oneline --graph
*   1bc7878 (HEAD -> b) b3
|\  
| * 3a6d09d (a) a3
| * b11ea5c a2
* | 2d6b761 b2
|/  
* 38babd9 a1
$ git commit --amend -C HEAD
[b c5650ba] b3
 Date: Mon May 9 03:11:28 2022 -0700
$ git log --all --decorate --oneline --graph
*   c5650ba (HEAD -> b) b3
|\  
| * 3a6d09d (a) a3
| * b11ea5c a2
* | 2d6b761 b2
|/  
* 38babd9 a1

现在,对于分支b的提交,我们有了一个新的、不同的哈希ID (在我的测试中现在是c5650ba,但是当然每个人在这里都会得到不同的哈希ID )。但是我告诉Git,在没有编辑的情况下,用-C HEAD重用来自上一个分支提示提交(-C HEAD)的提交消息,所以在这一点上没有手动干预就发生了。现在合并提交又有了子模块。

(如果将旧的合并提交添加到git log命令中,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git log --all --decorate --oneline --graph 1bc7878
*   c5650ba (HEAD -> b) b3
|\  
| | * 1bc7878 b3
| |/| 
|/|/  
| * 3a6d09d (a) a3
| * b11ea5c a2
* | 2d6b761 b2
|/  
* 38babd9 a1

只是没有旧合并提交的名称。由于我们从未将它发送到任何地方--我们没有运行git push,也不允许任何人与git fetch-nobody一起潜入我们的机器,否则我们就会知道我们曾经成功过)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72168567

复制
相关文章
Mongodb只读副本集如何切换到读写模式
Mongodb副本集具备自动故障转移的高可用特性,通常所说副本集是1主2从的架构,当主节点出现故障时,剩下2个节点会自动进行选出新主节点,提供对外服务.也可以进行主动维护,将主节点降级为从节点,将从节点提升为主节点.本次要介绍是当副本集中只有1个节点活着,其他节点全部异常,此时仅存的节点自动变成secondary,只能提供只读业务,无法提供写入业务.只有secondary变成primary才可以写入,此时应该如何做?
徐靖
2020/08/13
2.2K0
03: 打开摄像头
学习打开摄像头捕获照片、播放本地视频、录制视频等。图片/视频等可到文末引用处下载。
CodecWang
2021/12/07
1.9K0
Mongodb只读副本集如何切换到读写模式(下)
接上一篇文章《Mongodb只读副本集如何切换到读写模式》,大概思想就是如何强制把副本集中仅存secondary节点提升为主,主要是通过standalone方式重启实例来实现,经过与大家交流与沟通,虽然此方式可以实现,但是以前老节点必须重新初始化,尤其当单节点数据很大时,此方式是缺点明显.最有效方式是通过rs.reconfig()方式来实现.此方式也分为2种:
徐靖
2020/08/13
1.4K0
ubuntu打开usb摄像头
1、保持在 ubuntu 界面,插上 usb 摄像头,将 usb 摄像头连接到虚拟机上。
Gnep@97
2023/08/10
1.9K0
ubuntu打开usb摄像头
利用python打开别人手机摄像头_python 摄像头
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169904.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
2.6K0
利用python打开别人手机摄像头_python 摄像头
opencv之打开摄像头、边缘检测
许多工业相机或某些视频I / O设备不为操作系统提供标准的驱动程序接口。因此,您不能在这些设备上使用VideoCapture或VideoWriter。
全栈程序员站长
2022/07/23
3.4K0
opencv之打开摄像头、边缘检测
Android App java 读取raw图像数据然后显示
src\main\java\com\wfh\canvasdemo\DataUtil.java
IT工作者
2022/05/20
6630
如何从Windows切换到Linux
微软已经马上准备在2020年1月份终止对Windows 7的支持,这意味着您将不再获得bug修复或安全更新。如果您是Windows 7的最终支持者之一,并且不想陷入一个不安全的系统,则可以选择:升级到Windows 10或完全切换到其他版本。
用户6543014
2020/02/10
3.9K0
小米手机_如何打开开发者模式?[通俗易懂]
大多数手机的开发者模式按钮都在更多设置中,但是小米手机有些不一样,更多设置中没有展示开发者选项,那么小米手机怎样打开开发者模式呢?
全栈程序员站长
2022/09/21
3.7K0
小米手机_如何打开开发者模式?[通俗易懂]
JS打开摄像头并截图上传
要注意的是,在chrome以外的浏览器中,使用摄像头或多或少会出现一些问题,可能也是老问题了,所以以下代码主要基于chrome使用
书童小二
2018/09/03
5.9K0
JS打开摄像头并截图上传
webrtc之STUN、TURN、打开摄像头实战
大家周末好,今天给大家分享的是webrtc第一篇文章,在之前的音视频文章里面没有分享过关于webrtc的内容;在上个周末分享了一篇关于播放器的文章,那篇文章整体上介绍了播放器的设计结构;我个人的学习路线,主要分为两大方向:ffmpeg和webrtc,然后会具体到各种协议。
用户6280468
2022/03/21
2.2K0
webrtc之STUN、TURN、打开摄像头实战
D妹打开了摄像头并开始……
直播! 你没看错,D妹真的要直播了! 没有套路 成年人的世界再简单一点 不用猜D妹是长腿妹妹还是抠脚大汉 活生生的D妹就在直播间与你面对面 就问你来不来? 6月18日 从早上10点到晚上9点 开机整整11个小时 D妹跟你聊聊产品 唠嗑唠嗑 最重要的 当然是给你618大促-直播间专属最低价 域名解析、建站证书、云服务器一次性全购齐! 没有什么烧脑规则 没有什么骚操作 直接上秒杀价 直接抽大奖 羊毛都捋顺了 就等你来薅! 【618直播预告第一弹】 ↓ ↓ ↓ 下周 将会放出618直播预告第二弹
腾讯云DNSPod团队
2021/06/07
7660
html5打开摄像头
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <title>Smart Home - Camera</title> <link href="css/main.css" rel="stylesheet" type="text/css"> <script src="
李海彬
2018/03/20
2.3K0
WebRTC网页打开摄像头并录制视频
前面我们能打开本地摄像头,并且在网页上看到摄像头的预览图像。 本文我们使用MediaRecorder来录制视频。在网页上播放录制好的视频,并能提供下载功能。
落寞的鱼丶
2022/02/26
1.6K0
python PIL 打开\显示\保存图像
使用python进行数字图片处理,还得安装Pillow包。虽然python里面自带一个PIL(python images library), 但这个库现在已经停止更新了,所以使用Pillow, 它是由PIL发展而来的。
狼啸风云
2020/10/28
3.5K0
python PIL 打开\显示\保存图像
Git 如何切换到不同远程仓库
例如我们有一个项目 USRealEstate,当前使用的是微信的 Git,我们希望切换到 GitHub 上。
HoneyMoose
2020/08/01
1.2K0
Git 如何切换到不同远程仓库
ESP32-CAM使用+源码分析
PSRAM:pseudo SRAM,伪SRAM。它具有类SRAM的接口协议:给出地址、读、写命令,就可以实现存取,不像DRAM需要memory controller来控制内存单元定期数据刷新,因此结口简单;但它的内核是DRAM架构:1T1C一个晶体管一个电容构成存储cell,而传统SRAM需要6T即六个晶体管构成一个存储cell。由此结合,他可以实现类SRAM的接口有可实现较大的存储容量。(我们都知道大容量SRAM非常贵)
云深无际
2021/02/23
7.8K0
ESP32-CAM使用+源码分析
点击加载更多

相似问题

如何从视图模式自动切换到编辑模式,反之亦然。

13

打开Android摄像头,然后在新活动中打开捕获的图像

21

如何将jetpack摄像头预览从后面切换到前面,反之亦然?

11

如何在IPhone中将导航栏从横向模式切换到纵向模式,反之亦然

13

Android摄像头,保存图像,然后显示图像。

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文