实际使用git管理一个大型项目时,如llvm,当仅修改极少量的代码,切换分支后会引起很多代码的重新构建。特别是切换到老的分支上,老的build目录里应该不需要重新编译才对。由此引发一个问题:git checkout 切换分支之后,源码的日期会变化吗?
假如A,B分支中都有源文件fun.c, A中比B中新,当前在A分支,checkout到B分支,fun.c的修改日期会变成B分支中最后修改日期吗?
答案是,因为fun.c的在两个分支上不同,切B后会重写编译环境中的该文件,导致fun.c的修改时间为当前最新时间,这一般会比A,B分支的最后修改时间都新,从而切分支的过程会引起构建的叶子节点变化感知,触发一系列重新构建操作。而我们预期的应该是且分支之后,文件的修改时间变成最终提交时间。
git-restore-mtime是一个切分支后恢复文件时间为分支上最后修改时间的第三方工具。在ubuntu下安装和使用方法如下
sudo apt-get install git-restore-mtime
git restore-mtime
标签:restore,git,修改,编译,fun,分支
From: https://www.cnblogs.com/zwlwf/p/17977512