更新 :这将工作更直观的Git 1.8.3,看到我自己的答案 。 想象下面的用例:我想摆脱我的Git工作树的特定子目录中的所有更改,保持所有其他子目录不变。 我可以做git checkout . ,但git结帐。 添加稀疏结帐排除的目录 有git reset –hard ,但不会让我做一个子目录: > git reset –hard . fatal: Cannot do hard reset with paths. 再说一遍: 为什么git不能通过path进行硬/软重置? 我可以使用git diff subdir | patch -p1 -R来修改当前状态 git diff subdir | patch -p1 -R ,但这是一个很奇怪的做法。 什么是这个操作适当的Git命令? 下面的脚本说明了这个问题。 在How to make files注释下面插入正确的命令 – 当前命令将恢复应该被稀疏检出排除的文件a/c/ac 。 请注意,我不想明确地恢复a/a和a/b ,我只是“知道” a并且想要恢复下面的所有内容。 […]