How do I use 'git filter-branch' to update the SHA of a submodule?
Let’s assume that I have two Git repositories, A and B. B is a submodule of A.
For the sake of simplicity, let’s also assume that I have a magic function,
get_sha_B that, given an SHA commit from A, returns the desired SHA commit of B.
- Git: multiple subtrees/submodules in one folder?
- git subtree or submodule for surrounding directories
- github submodule access rights (Travis CI)
- Readable submodule status information in git
- Replaced third party code with git submodules, now I can't switch branches
- How to make Git submodules easier for non-programmers?
How do I run filter-branch on repo A such that each commit of repo A is rewritten to point to the desired commit of repo B, as returned by
One Solution collect form web for “How do I use 'git filter-branch' to update the SHA of a submodule?”
Figured it out! I’m going to answer my own question here:
I can use
git update-index in conjunction with
git filter-branch --index-filter.
Here’s how to call update-index to modify the commit SHA of a submodule:
git update-index --cacheinfo 160000 88e6a302c42840440f9faac73f27efc6a3e0c1a6 pathto/mysubmodule
As best as I understand it, the 160000 is a magic number in Git used to identify a submodule.