我有一个文件在某处已中断,并且我发现它仍在修复的最后一点。
我想知道如何使用git来比较两次提交中的一个文件,或者确实这是播放此文件的最佳方法!
最佳答案
要直接回答您的问题,假设您想比较当前src/toaster.c
和旧的commit master
之间的文件f4l4f3l
,您可以执行以下操作:
git diff master f4l4f3l -- src/toaster.c
作为替代方案,您可以使用以下命令查看该文件的所有更改:
git log -p -- src/toaster.c
但是,更一般而言,如果您尝试查找引入了特定错误的提交,则git为此提供了一个很棒的工具git bisect。如果您将此工具告知工作和非工作提交,它将使用二进制搜索策略为您提供一系列提交,以在这些提交之间进行测试。
您将使用以下命令开始平分:
git bisect start
然后,如果您当前的提交有错误,则只需执行以下操作:
git bisect bad
接下来,您需要找到一个绝对没有错误的较早的提交。这可能有一个特定的标记,或者也许您只是选择了几个月前的一次提交。假设一个名为
a12b3d
,那么您将执行以下操作:git checkout a12b3d
git bisect good
到那时,git将计算出您需要测试的下一个提交,并执行
git checkout
将您移至该提交。 (这些 checkout 将全部使用“分离的HEAD”,因此您的原始分支指针不变。)然后测试该提交,并根据是否有错误来运行git bisect good
或git bisect bad
。这些修订之间的二进制搜索将迅速缩小到第一个错误的提交,并报告它是哪个错误的提交。然后返回到您正在做的事情,您可以执行以下操作:git bisect reset
关于git - 使用git从两个提交中比较一个文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5550137/