【发布时间】:2012-05-08 12:40:49
【问题描述】:
我在 git 中有两个开发分支,我经常需要在两者之间进行切换。然而,真正令人沮丧的是,每次我在 git 中更改分支时,整个项目都会重新构建,因为某些文件的文件系统时间戳会发生变化。
Ofc,makefile 被配置为将项目构建到两个不同的构建目录中。
有没有办法解决这个问题?编译是一个非常漫长和耗时的过程……
编辑:- 这是对该问题的更详细的解释... 假设我有一个头文件 Basic.h,它包含在许多其他文件中。分支 1 和分支 2 的 Basic.h 不同。
现在假设我已将分支 1 编译为 build_branch1,将分支 2 编译为 build_branch2。假设我目前已签出分支 2。现在我签出分支 1 并更改 File1.cpp 并重新编译。理想情况下,由于自上次编译以来只有 File1.cpp 发生了变化,因此这是唯一应该重新编译的文件。
但是,由于 Basic.h 由于结帐而更改了时间戳,所有包含 Basic.h 的文件都将被重新编译。我想避免这种情况。
【问题讨论】:
-
我认为 git 只会更改确实已更改的文件的时间戳。在这种情况下,无论如何您都必须重建才能获得正确的结果。你在寻找什么行为?
-
参见this 相关主题。基本上不建议这样做。
-
@sinelaw :- a.cpp 包括 Basic.h。我在 branch1_build/a.o 和 branch2_build/a.o 有两个 a.o 副本。现在,当我将分支从 branch1 切换到 branch2 时,即使它是最新的,它也会重新编译 branch2_build/a.o
标签: c++ c git makefile git-pull