首页 > 解决方案 > 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

解决方案


该命令git checkout -- A/B/C/*不起作用,因为A/B/C还包含几个未版本化的生成文件。

那是因为你让你的 shell 进行全局扩展,所以它正在查看所有文件。

如果您改为让git自己进行 glob 扩展,它只会查看已经在版本控制下的文件:

$ git checkout -- A/B/C/\*

尽管坦率地说,我宁愿运行两个命令,也不愿担心手动决定在哪里处理哪些特殊字符。


推荐阅读