我使用 git 与 SVN 存储库交互。对于我从事的不同项目,我有几个 git 分支。
现在,每当我使用“git checkout”从一个分支切换到另一个分支时,前一个分支中所有已编译的可执行文件和目标文件都仍然存在。我希望看到的是,从分支 A 切换到 B 会生成一棵树,其中包含我上次在分支 B 上工作时的所有目标文件和二进制文件。
有没有办法在不创建多个 git 存储库的情况下处理这个问题?
更新:我了解可执行文件和二进制文件不应最终出现在存储库中。我对 git 中的所有分支内容对我来说毫无用处感到有点失望,因为事实证明我必须为我想要启动的每个分支克隆我的代理 git 存储库。我已经为 SVN 做过一些事情,并希望避免使用 git。当然,我不必这样做,但它会导致我在切换分支后大部分时间都在做一个新的制作(不好玩)。
最佳答案
你想要的是一个完整的上下文,而不仅仅是分支......这通常超出了版本控制工具的范围。最好的方法是使用多个存储库。
尽管如此,不要担心效率低下... 让您的第二个存储库成为第一个存储库的克隆。 Git 会自动使用链接来避免磁盘上有多个拷贝。
这里有一个小窍门,可以满足你的需求
由于您有单独的 obj 目录,您可以修改您的 Makefile 以使用以下内容使基本位置动态化:
OBJBASE = `git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1\//'`
OBJDIR = "$(OBJBASE).obj"
# branch master: OBJBASE == "master/", OBJDIR == "master/.obj"
# non-git checkout: OBJBASE == "", OBJDIR == ".obj"
这会将您的分支名称转换为 OBJBASE,您可以使用它来构建您的实际 objdir 位置。我会留给您修改它以适应您的环境,并使其对您的 Makefile 的非 git 用户友好。
关于c++ - git 和 C++ 工作流程,如何处理对象和归档文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/655202/