【问题标题】:Checkout branch in git submodulegit 子模块中的结帐分支
【发布时间】:2016-09-24 05:02:48
【问题描述】:

如何从子模块中更改分支?当我从子模块中运行 git branch 时,我看到以下输出:

> git branch
  * (HEAD detached from 229a7b2)
  master

我将如何将自己置于新的分支上?喜欢development?

【问题讨论】:

    标签: git


    【解决方案1】:

    简单列出你的分支:

    git branch -avv
    

    然后结帐你想要的那个

    git checkout -b myBranch origin/mybranch
    

    或者从你当前的提交创建一个新的开发分支:

    git checkout -b development
    

    子模块总是以 detached HEAD 签出(意味着在 SHA1)

    当您更改它并进行任何新提交(或通过分支签出更改当前提交)时,请不要忘记:

    • 将提交推送到子模块 repo repo(它自己的来源)
    • 转到父仓库,添加、提交和推送新的子模块 SHA1。
      父仓库将所述子模块 SHA1 存储为 gitlink、special entry in its index。

    【讨论】:

    • 太好了,谢谢!对于我的特定目的,我从不从子模块提交,所以我想我只需要做git checkout -b myBranch origin/myBranch
    • @Apollo 你可以在子模块中进行新的提交:见stackoverflow.com/a/1979194/6309。您可以配置您的子模块以跟随一个分支,这样父 repo 可以将子模块更新为该分支的最新获取提交:stackoverflow.com/a/9189815/6309
    • 我明白了,所以在我从子模块中结帐到myBranch 后,我可以通过执行git pull origin myBranch 来从myBranch 中提取新的更改,对吧?
    • @Apollo 是的,子模块本身就是一个 git 存储库,具有 Git 存储库的所有常用工作流程(获取/拉取/推送)。你只需要记住在父 repo 中添加、提交和推送 gitlink(即在父 repo 中记录你的子模块的新状态)
    • 好的,谢谢。所以我表演了git checkout -b myBranch origin/mybranch,但现在我再也看不到* (HEAD detached from 229a7b2)了。当我看到git branch 时,我只看到myBranch 和master。当我做了git checkout master 我看到Switched to branch master. Your branch is behind 'origin/master' by 138 commits, and can be fast-forwarded. 我做错了什么吗?
    猜你喜欢
    • 2020-03-31
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 2019-08-09
    • 2018-11-18
    • 2014-02-12
    • 2019-09-02
    相关资源
    最近更新 更多