I have attached a testcase shell script.  I want to downgrade a sub-project, 
but can't figure out how.  Here's the story:

I created two repos, "subproject" and "superproject".
I committed several versions of some files into subproject, giving them tags 
"v0", "v1", "v2"... etc.
In superproject, I added subproject as a repo and merged it as a subtree:

  git remote add subproject ../subproject
  git fetch --tags subproject
  git merge -s ours --no-commit v1
  git read-tree --prefix=subproject/ -u v1
  git commit -m "added subproject at v1"

I then commit some patches to subproject, but I believe that is immaterial.
Next I update the subproject to v3, and that goes well:

  git merge -s subtree -X subtree=subproject v3

But then I realize I really want v2.  I think what I need here is a rebase, 
but I'm not sure.  Here's what I tried:

  git checkout -b downgrade-subproject-to-v2
  git rebase -s subtree -X subtree=subproject --onto v2 

But I see the contents of the subproject get spoojed out all over my 
superproject's main directory!

Is this a bug in rebase, or am I doing it wrong?


You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To post to this group, send email to git-users@googlegroups.com.
To unsubscribe from this group, send email to 
For more options, visit this group at 

Attachment: test-subtree-merge.sh
Description: application/shellscript

Reply via email to