How to make submodule with detached HEAD to be attached to actual HEAD?

匿名 (未验证) 提交于 2019-12-03 01:39:01

问题:

When I add a Git submodule to a Git repository like this,

git submodule add ssh://server/proj1/ proj1 git submodule init git submodule update 

the added submodule will be in detached HEAD mode. I don't know well what that is, but I know that the submodule will be linked to specific revision of the target repository.

I don't know how it actually works, anyway it looks like a proxy branch exists there. I solved this by switching to master branch.

cd proj1 git checkout master 

This will switch current branch actual master HEAD, but this does not update the linkage. So If you clone the whole repository again, it will still be linked to old revision.

If I want to make it to be linked to most recent revision (HEAD) always, what should I do?

回答1:

Update March 2013

Git 1.8.2 added the possibility to track branches.

"git submodule" started learning a new mode to integrate with the tip of the remote branch (as opposed to integrating with the commit recorded in the superproject's gitlink).

# add submodule to track master branch git submodule add -b master [URL to Git repo];  # update your submodule git submodule update --remote  

See also the Vogella's tutorial on submodules.


Original answer (December 2011)

added submodule will be in detached HEAD mode

Yes, a submodule is about referencing a specific commit, and not a branch.
So:

  • If you checkout a commit SHA1 (or a tag), you are in a detached HEAD mode.
  • If you checkout a branch (like you did with master branch of the submodule), you can create other commits on top of that branch (but you will have to go back to the parent repo in order to commit said parent as well, for you need to record the new submodule commit you created)

See "True nature of submodules" for more.

If you always wanted the latest commit of another repo, the simplest way would be to merge them together (for instance with subtree merging).
See "Merge 2 same repository GIT" for the details and references.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!