只有将克隆到单独的本地目录时,我才能为NodeMCU的所有分支https://github.com/nodemcu/nodemcu-firmware构建固件。
当我尝试仅拥有一个文件夹并使用git checkout分支时,我只能构建主固件。当我签出分支时,其他文件也会更改以匹配分支,但是我无法构建固件。也许这就是它的样子?我希望我可以先使用git checkout master,然后进行make来构建主固件,然后再使用git checkout dev再进行make来构建dev固件。文件确实会更改以正确反映分支,所以我不确定为什么它不起作用。
答案 0 :(得分:2)
首先,您不必进行多次克隆。
您可以只创建一个克隆,然后使用git worktree
在相应文件夹中检出这些分支。
第二,当您签出分支时,在第一次编译期间创建的其他文件不会被删除,这可能会干扰您的第二次编译。
执行git clean -n -d -x -f
来预览 您可以从新检出的工作树中清除的内容。
确定后,请删除-n
(空运行选项)。如果您不想删除被忽略的文件,也请删除-x
。
答案 1 :(得分:2)
虽然@VonC的回答肯定有帮助并且有点“正确”,但它也很通用。
您可能会遇到的麻烦是Git子模块。我们将其用于例如u8g2和ucg。在相应分支的.gitmodules
中查看详细信息。
切换分支时,需要更新子模块。 git worktree
在这里会非常方便,但是由于仍有一些错误会影响我从未尝试过的子模块的处理。
我怀疑您遵循https://nodemcu.readthedocs.io/en/master/build/#git上的说明。对于ESP32 branch,我们记录了更多的构建说明,因为云构建器尚不支持。
结论:确保每次切换分支时都运行git submodule update --recursive
。