c++ - 避免使用 git 和 make 重新编译

标签 c++ c git makefile git-pull

我在 git 中有两个开发分支,我经常需要在两者之间进行切换。然而,真正令人沮丧的是,每次我在 git 中更改分支时,整个项目都会重新构建,因为某些文件的文件系统时间戳会发生变化。

Ofc,makefile 被配置为将项目构建到两个不同的构建目录中。

有没有办法解决这个问题?编译是一个非常漫长和耗时的过程……

编辑:- 这是对该问题的更详细的解释... 假设我有一个头文件 Basic.h,它包含在许多其他文件中。分支 1 和分支 2 的 Basic.h 不同。

现在假设我已将分支 1 编译为 build_branch1,将分支 2 编译为 build_branch2。假设我目前已 checkout 分支 2。现在我 checkout 分支 1 并更改 File1.cpp 并重新编译。理想情况下,自从我上次编译后,只有 File1.cpp 发生了变化,这是唯一应该重新编译的文件。

但是,由于 Basic.h 由于 checkout 而更改了时间戳,所有包含 Basic.h 的文件都将被重新编译。我想避免这种情况。

最佳答案

Git 仅更改在分支之间更新的文件。但是,如果您的编译器在任何单个文件被更改的情况下进行完全重建,您始终可以克隆并将不同的分支 check out 到不同的目录中。就像:

/your-repo-name.branch1
/your-repo-name.branch2

这会占用额外的磁盘空间,但比在一个巨大的 repo 中切换不同的分支要方便得多。

关于c++ - 避免使用 git 和 make 重新编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10356165/

相关文章:

git - 这个基于审查的 Git 工作流可以由 Gerrit 执行吗?

git - 如何将 git pull <REMOTE> <BRANCH> 分解为 fetch + merge?

Git 远程服务器连接被拒绝

c++ - 未知的动态类型转换

c++ - 取消引用无效指针但不使用结果是 C++ 中的未定义行为吗?

c++ - 跟踪 C++ lib 公共(public) API 更改

在 C 中从十六进制字符串创建字节数组

c++ - 一维不变一维可变的容器

c - 为什么C中的unsigned char数据类型是00000000 - 00000001 = 11111111?

c - C位字段如何合并?