有没有一种简单的方法可以获取某个时候从git中删除的类/文件的内容?

有没有一种简单的方法可以获取某个时候从git中删除的类/文件的内容?,git,intellij-idea,Git,Intellij Idea,不久前我做了一些提交,添加了一些新类。后来,一位同事用commit B修改了一些东西,并删除了我的类 为了进行一些调试,我只想查看一些已删除的类(以确认它们包含一些现在基本上缺失的功能) 有没有(简单的)方法可以做到这一点(假设使用了git和intellij) 编辑:我认为intellij现在在版本控制窗口中有一个上下文菜单项显示所有受影响的文件(对于其中列出的每个提交) 但我想知道,当我只记得手头的文件名时,是否有一种解决方案适用于这种情况。从已知的提交获取文件是有帮助的,但是如果很难识别提交

不久前我做了一些提交,添加了一些新类。后来,一位同事用commit B修改了一些东西,并删除了我的类

为了进行一些调试,我只想查看一些已删除的类(以确认它们包含一些现在基本上缺失的功能)

有没有(简单的)方法可以做到这一点(假设使用了gitintellij

编辑:我认为intellij现在在版本控制窗口中有一个上下文菜单项
显示所有受影响的文件
(对于其中列出的每个提交)


但我想知道,当我只记得手头的文件名时,是否有一种解决方案适用于这种情况。从已知的提交获取文件是有帮助的,但是如果很难识别提交,该怎么办?

您可以使用git bisect来确定文件何时被删除

下面是一个完整的演示,介绍如何操作。

git bisect
允许您使用二进制搜索搜索所有提交,您将能够确定所需代码何时被删除

执行所需操作的方法是使用
git对分运行

使用到目前为止所做的对分,并将对分与脚本选项一起使用

脚本将返回用于跳过的适当代码(或125用于不可测试-更适合您的情况)

请注意,如果当前源代码良好,则脚本应以代码
0
退出;如果当前源代码不好,则脚本应以介于1和127之间的
代码退出(包括125

任何其他退出代码都将中止对分过程。应该注意的是,通过“exit(-1)”终止的程序会留下$?=255,(请参阅退出(3)手册页),因为该值用“&0377”截断

当当前源代码无法测试时,应使用特殊退出代码125。如果脚本使用此代码退出,则将跳过当前版本(请参见上面的git bisect skip)

125
被选为用于此目的的最高合理值,因为POSIX Shell使用
126
127
来表示特定的错误状态(
127
表示未找到命令,
126
表示已找到但不可执行的命令---这些细节无关紧要,因为就
对分运行而言,它们是脚本中的正常错误)


演示代码 您可以在“版本控制”面板中查看有关如何使用git bisect的示例代码,其中有一个“日志”选项卡,您可以在这里找到任何提交,并查看所有添加/更改/删除的提交文件


如果你不知道文件在哪个提交中被删除,只需回答其他问题,比如

看起来不错,但对我来说不起作用,因为我不能简单地将github中的“东西”包括在我的工作环境中。仍然值+1;-)我自己要加上它-是的,这很有效。但问题当然是——我确实需要首先确定包含该类的提交。在这种情况下很容易,但几个月后可能会困难得多。可以在IDEA版本控制日志窗口中按路径过滤提交。