我正在一个项目中,我们使用git子模块来跟踪代码整体(几个不同的部分一起发布)所以我喜欢子模块跟踪特定提交的想法,因为子模块主要用于是历史目的。
这很好,以便将来可以签出超级仓库的特定标签,并找出每个组件的代码所在。但是如果突然想要对该特定版本执行更多提交,则会出现一个问题,因为由于您处于无头状态,因此没有真正的方法可以找出提交所属的分支。
跟踪分支,如1.8.2中所添加的那样,似乎无法解决问题,因为我只能检查分支中的最新提交,这可能不是当时发布的
有没有某种方法可以混合2,在那里可以检查超级仓库并查看当时的所有提交但仍然被跟踪到分支,以便他确切知道要从哪个分支中提取(因为它们可能有更多的承诺到那个分支)并继续致力于它?
我想我正在寻找的是以某种方式让git陷入一种状态,好像开发人员有几次提交从服务器下拉,他的本地repo头在正确的提交但服务器已经向前移动,这他可以准确地知道他在哪里,并轻松拉动以获得该分支的最新提交。或者只是让git子模块跟踪标签(可能?)。
我是否正确地说,从技术上说,如果告诉子模块跟踪一个分支,我可以省略-remote from“git submodule update”命令来获取特定的提交(如果我是,比如说,检查一个提交/ tag在submodule文件夹中并将更改提交到super repo)并获取特定标记,然后将--remote添加到另一个“git submodule update”以最终出现在与该提交有关的分支中,稍微解决整个问题?
对此事的任何意见表示赞赏。
答案 0 :(得分:1)
跟踪分支,如1.8.2中所添加的那样,似乎无法解决问题,因为我只能检查分支中的最新提交,这可能不是当时发布的
然后只需确保您的子模块正在跟踪“发布”分支,您可以从中选择创建自己的分支,并添加更多提交。
请记住,即使遵循分支,git子模块更新 - 使用git fetch
更新并更新子模块,但始终将其保留在detached HEAD mode。
请参阅“Git submodule to track remote branch”。
然后您可以定义要处理的分支。
如果您已在该子模块中使用自己的专用分支,请使用,以更新它:
git submodule update --remote --rebase
这将在更新的子模块之上修改您当前的工作。