git - Git 使用一个命令撤消对多个文件(但不是全部)的未提交更改,并且混合了未跟踪的文件
问题描述
假设我有一个带有以下未分级更改的回购结构:
modified: A/B/C/file1
modified: A/B/C/D/file2
modified: A/B/E/file3
如何使用单个命令仅从 file1 和 file2 恢复更改?该命令git checkout -- A/B/C/*
不起作用,因为 A/B/C 还包含几个没有版本控制的生成文件。来自 git 的错误是“错误:pathspec 'A/B/C/file4' 与 git 已知的任何文件都不匹配”
解决方案
该命令
git checkout -- A/B/C/*
不起作用,因为A/B/C
还包含几个未版本化的生成文件。
那是因为你让你的 shell 进行全局扩展,所以它正在查看所有文件。
如果您改为让git
自己进行 glob 扩展,它只会查看已经在版本控制下的文件:
$ git checkout -- A/B/C/\*
尽管坦率地说,我宁愿运行两个命令,也不愿担心手动决定在哪里处理哪些特殊字符。
推荐阅读
- git - 合并MR时Gitlab CI运行作业
- python - 通用 *args 的 Python 类型提示(特别是 zip 或 zipWith)
- javascript - 如何在 VueJs 中制作表格并在 .NET Core Web 应用程序中添加 MSSQL 数据库接收的值
- azure-devops - 是否允许从 Azure-Devops 与我的数据中心建立 VPN 连接?
- python - 列表理解输出
- python - Matplotlib 动画擦除以前的数据
- javascript - 如何修复页面加载时音频不自动播放的问题?- html
- amazon-web-services - Cloudformation 自定义资源
- vba - 是否可以在 VBA 中使用 MyServices.ClipboardProxy?
- rust - 通过 Rumble 从蓝牙 5 LE DevBoard 读取串行数据流