我有一个项目git
。有一天,我将所有项目文件从当前目录移至foo/bar/
在该项目下。我用的是git mv
。然后我添加了更多文件并对现有文件进行了一些更改。
结果,现在当我回顾历史时foo/bar/file.c
,我只能看到移动文件后所做的更改。
我尝试以各种方式解决这个问题(filter-branch
使用子目录过滤器等),但没有任何帮助,所以我在这里很拥挤。我将不胜感激您能给我的任何帮助。
谢谢!
要重写移动文件的历史记录:
如果您希望项目的历史记录看起来好像所有文件都始终位于该目录中foo/bar
,那么你需要做一个小手术。使用git filter-branch
使用“树过滤器”重写提交,以便在任何地方foo/bar
不存在,它被创建并将所有文件移至其中:
git filter-branch --prune-empty --tree-filter '
if [ ! -e foo/bar ]; then
mkdir -p foo/bar
git ls-tree --name-only $GIT_COMMIT | xargs -I files mv files foo/bar
fi'
现在,历史记录将被记录,就好像所有文件都被记录一样always位于foo/bar
.
要查看移动文件的历史记录:
如果您只想查看过去某个时刻移动或重命名的文件的历史记录,那么只需使用--follow
选项git log
:
git log --follow foo/bar/file.c
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)