【问题标题】:Git submodule track commit but know branch?Git子模块跟踪提交但知道分支?
【发布时间】:2013-12-05 05:30:04
【问题描述】:

我在一个项目中工作,我们使用 git 子模块来跟踪整个代码(几个不同的部分一起发布),所以我喜欢子模块跟踪特定提交的想法,因为子模块主要用于是历史目的。

这很好,以便将来人们可以检查超级仓库的特定标签并找出每个组件的代码所在的位置。但是,如果您突然想要对该特定版本执行更多提交,则会出现问题,因为由于您处于无头状态,因此没有真正的方法可以找出提交属于哪个分支。

在 1.8.2 中添加的跟踪分支似乎并不能解决我所读到的问题,因为这只会检查分支中可能不是当时发布的最新提交.

是否有某种方法可以混合这两种方法,人们可以在其中签出超级回购并查看当时所有内容都在哪个提交但仍被跟踪到一个分支,以便他确切知道要从哪个分支中提取(因为他们可能有对那个分支有更多的承诺)并继续承诺?

我想我正在寻找的是以某种方式让 git 处于一种状态,就好像开发人员有几个提交要从服务器上拉下来,他的本地 repo 头在正确的提交但服务器已经向前移动了,这个这样他就可以准确地知道他在哪里,并轻松地拉取该分支的最新提交。或者只是让 git 子模块跟踪标签(也许?)。

从技术上讲,我是否正确,如果告诉子模块跟踪分支,我可以从“git submodule update”命令中省略 --remote 以获取特定的提交(如果我是,比如说,签出一个提交/tag 在子模块文件夹中并将更改提交到超级仓库)并获取特定标签,然后将 --remote 添加到另一个“git子模块更新”以最终进入与该提交有关的分支,有点解决整个问题?

感谢您对此事的任何意见。

【问题讨论】:

    标签: git git-branch git-submodules


    【解决方案1】:

    在 1.8.2 中添加的跟踪分支似乎并不能解决我所读到的问题,因为这只会检查分支中可能不是当时发布的最新提交.

    然后只需确保您的子模块正在跟踪“发布”分支,您可以从中选择创建自己的分支并添加更多提交。

    请记住,即使在跟随分支时,git submodule update --remote with git fetch 并更新子模块,但始终将其保留在 detached HEAD mode 中。

    见“Git submodule to track remote branch”。

    然后由您决定要在其中工作的分支。

    如果您已经在该子模块中处理自己的专用分支,请使用,更新它:

    git submodule update --remote --rebase
    

    这将使您当前的工作基于更新的子模块。

    【讨论】:

      猜你喜欢
      • 2016-10-19
      • 2017-07-23
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 2012-02-29
      相关资源
      最近更新 更多