Git 使用不同的分支构建NodeMCU固件

Git 使用不同的分支构建NodeMCU固件,git,github,esp8266,nodemcu,Git,Github,Esp8266,Nodemcu,我能够为NodeMCU的所有分支构建固件,只有当我将它们克隆到单独的本地目录时 当我尝试只拥有一个文件夹并使用git签出分支时,我只能构建主固件。当我签出分支时,其他文件会更改以匹配分支,但我无法构建固件。也许就是这样?我希望我可以使用git checkout master,然后make来构建主固件,然后使用git checkout dev,然后make来构建dev固件。文件确实会更改以正确反映分支,因此我不确定它为什么不工作。首先,您不必进行多克隆。 您可以只创建一个克隆,然后使用签出它们各自

我能够为NodeMCU的所有分支构建固件,只有当我将它们克隆到单独的本地目录时


当我尝试只拥有一个文件夹并使用git签出分支时,我只能构建主固件。当我签出分支时,其他文件会更改以匹配分支,但我无法构建固件。也许就是这样?我希望我可以使用git checkout master,然后make来构建主固件,然后使用git checkout dev,然后make来构建dev固件。文件确实会更改以正确反映分支,因此我不确定它为什么不工作。

首先,您不必进行多克隆。 您可以只创建一个克隆,然后使用签出它们各自文件夹中的分支

其次,签出分支时,在第一次编译期间创建的其他文件不会被删除,这可能会干扰第二次编译

执行git clean-n-d-x-f预览您可以从新签出的工作树中清除的内容


确定后,删除-n干运行选项。如果您不想删除被忽略的文件,请同时删除-x。

虽然@VonC的答案肯定很有帮助,而且有些正确,但它也是非常通用的

您可能正在努力解决的是Git子模块。我们将其用于例如u8g2和ucg。查看各个分支中的inside.gitmodules以了解详细信息

切换分支时,需要更新子模块。git worktree在这里会非常方便,但由于仍然存在影响子模块处理的bug,我从未尝试过

我怀疑你是按照指示做的。由于cloud builder还不支持,因此我们记录了更多的构建说明


结论:确保每次切换分支时都运行git子模块更新-递归。

构建之后,您可以使用git状态吗?也许有文件在建。也许是因为它不是一个稳定的版本,甚至没有人测试过它的构建能力,所以dev没有构建它?理论上,这当然是可能的。在实践中,这是不太可能的,因为我们有CI来确保这种情况不会被忽视。Travis的徽章显示,对于当前的开发技巧来说,它的构建非常好。对于其他分支来说也是如此。这是一个很好的建议。向上投票。我起初没有看到创建一个自动运行此功能的签出后挂钩。请看一个例子。我实际上更喜欢那里被接受的答案:git config-global submodule.recurse true您仍然可以选择在本地而不是全局执行此操作。这是一个很好的建议,我会这样做,但在运行git clean-d-x-f之前,make仍然会失败。我必须使用-xAlso-use git submodule update-recursive来更新子模块,但在使用git clean-d-x-f之前,我无法使make成功。需要-x。。。