恢复子模块为主仓库跟踪的分支,删除跟踪和未跟踪的文件

孙柄晨 孙柄晨
2023-12-09
半年前
0
如何通过硬重置和清理命令彻底重置主仓库和所有子模块到最新的提交状态,并警告这些操作会永久删除所有未提交和未跟踪的更改。

清理和同步 Git 仓库和子模块

在使用 Git 进行版本控制时,可能需要放弃所有未提交的更改,并将你的仓库重置为与追踪的远程仓库一致的状态。以下步骤将帮助你彻底地重置主仓库和所有子模块。

1. 重置主仓库至最新追踪提交:

git reset --hard

这会将当前分支的 HEAD 指向最后一次提交,并放弃所有工作目录和暂存区的未提交更改。

2. 清除主仓库中所有未跟踪的文件和目录:

git clean -fdx

这一命令会强制删除所有未跟踪的文件和目录,包括被 .gitignore 忽略的文件。

3. 递归地对每个子模块执行重置和清理操作:

重置所有子模块:

git submodule foreach --recursive 'git reset --hard'

清理所有子模块中的未跟踪文件和目录:

git submodule foreach --recursive 'git clean -fdx'

4. 更新子模块以匹配主仓库:

如果子模块显示为 "modified (new commits)", 表明HEAD指向了与主仓库中记录的提交不同的提交,请运行:

初始化子模块(如果尚未初始化):

git submodule init

更新子模块以匹配主仓库记录的提交:

git submodule update --recursive

5. 验证状态:

验证主仓库和所有子模块的状态:

git status

注意: 这些命令将丢弃所有未提交和未跟踪的更改。在执行这些操作之前,请确保备份了所有重要的更改。


相关内容

从游离HEAD状态保存更改...
Git游离HEAD状态的快速修复:将更改提交回Master分支
2024-01-18 17:33:24
Git pull 强制覆盖...
拉取所有更新,不同步git fetch --all
2024-01-18 17:31:28
恢复子模块为主仓库跟踪的分...
如何通过硬重置和清理命令彻底重置主仓库和所有子模块到最新的提交状态...
2024-01-18 17:29:38
在 Git 中一键切换、更...
一步完成从切换到master分支,到同步、提交本地更改并推送到远程...
2023-12-18 11:26:24
检查Git子模块的分支状态...
指导如何用一条Git命令快速检查Git子模块的所跟踪分支和路径,并...
2023-12-14 08:15:10
使用Git一条命令快速更新...
一条命令实现Git操作:从切换到master分支,拉取最新代码,提...
2023-12-14 06:24:02

热门资讯

Git pull 强制覆盖本地代码 拉取所有更新,不同步git fetch --all
http 响应头安全策略(nginx 版) 针对当前环境下,对网络安全的要求较高,平台的搭建从各个方面都在增强安全性。以下是从 http 头文件...
恢复子模块为主仓库跟踪的分支,删除跟踪和未跟踪的文件 如何通过硬重置和清理命令彻底重置主仓库和所有子模块到最新的提交状态,并警告这些操作会永久删除所有未提...
测试 # 标题1## 标题2### 标题3~~删除线~~*斜体字***粗体*****粗斜体***### 引...
react className变量使用方式 这种命名规范主要是避免 class 作用域相互影响,在新版的 React 中命名为 xxx.modu...
从游离HEAD状态保存更改到Master分支 Git游离HEAD状态的快速修复:将更改提交回Master分支
批量更新子模块本地master分支 批量更新子模块本地master分支是指通过一次操作,同时更新多个子模块的本地主分支。这样可以节省时间...
Ubuntu 命令方式安装中文语言包 ## 查看语言环境安装之前执行 `$LANG` 中文语言包:* language-pack-zh-...
在 Git 中一键切换、更新并提交到远程 master 分支 一步完成从切换到master分支,到同步、提交本地更改并推送到远程的整个Git操作流程
检查Git子模块的分支状态及路径 指导如何用一条Git命令快速检查Git子模块的所跟踪分支和路径,并处理detached HEAD状态...