我在Windows上使用git-bash。我做了一个影响多个文件(大约500个)的更改
现在,问题是一半的更改不应该发生,我需要撤消对这些文件所做的所有更改。所有更改都是非分段更改。
如果只涉及少量文件(10-15),我可以直接添加我需要的文件,并使用git stash -u --keep-index
存储其余文件。但是涉及的文件数量使得使用git add
或git checkout -- filename
并处理每个文件变得更加困难。
是否有任何建议如何处理如此大量的文件,并立即添加我需要的文件或还原不需要的文件的更改?
谢谢
答案 0 :(得分:1)
执行您尝试执行的操作的最简单方法可能是利用find
实用程序。请注意,这与Windows {find
不同;如果你正在使用Git bash,你应该有正确的。
由于find
可能有点棘手,我想确保它通过echo
提供我期望的结果:
find src/com/mycomp/files -type f -name "*.java" ! -name "*Main.java" -exec echo git checkout -- {} \;
我会在这里分解命令:
find
是您正在运行的命令src/com/mycomp/files
是查看-type f
说只考虑文件,而不是目录或符号链接-name "*.java"
说要查看以.java
结尾但! -name "*Main.java"
表示不包含任何以Main.java
-exec
告诉find
对找到的文件运行以下命令echo
打印出它的参数,实际上让我们预览命令git checkout -- {}
是我们最终要运行的命令,find
替换{}
\;
表示为每个文件运行一次命令,而不是将所有文件一起处理。如果一切正常,我会编辑命令以删除echo
并再次运行。