假设我们在某个提交C中有一个文件F。给定未来的提交C',推断C'中从F派生的文件列表的最佳方法是什么?
一个文件可以在从一个提交到另一个提交的过程中以任意顺序多次修改、重命名、移动、复制、删除、拆分和合并。
我想确定通过此类操作从原始文件“派生”的文件的最终列表(可以是空的),最好使用 git 的管道命令。
是的,没有办法可靠地确定文件是否被拆分、合并、移动或复制。但是在 git-log 或 git-blame 中用于相同目的的算法应该没问题。(感谢@SpaceKatt)。
TL;DR我想要一个在给定输入的情况下产生以下输出的函数:
Input: {F, C, C'}
C is an earlier commit.
C' is a later commit (and C is reachable from C')
F is a file in C
Output: {F1', F2', F3', ...}
Fx's are list of files in C' that are derived from F
注意:如果这是相反的问题(即查找文件的历史记录),则可以使用git-log
or得出解决方案git-blame
,尽管我也不知道对此有完美的解决方案(不涉及瓷器)。