If I have a commit in the past that points to one parent, but I want to change the parent that it points to, how would I go about doing that?
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Using
git rebase. It’s the generic “take commit(s) and plop it/them on a different parent (base)” command in Git.Some things to know, however:
Since commit SHAs involve their parents, when you change the parent of a given commit, its SHA will change – as will the SHAs of all commits which come after it (more recent than it) in the line of development.
If you’re working with other people, and you’ve already pushed the commit in question public to where they’ve pulled it, modifying the commit is probably a Bad Idea™. This is due to #1, and thus the resulting confusion the other users’ repositories will encounter when trying to figure out what happened due to your SHAs no longer matching theirs for the “same” commits. (See the “RECOVERING FROM UPSTREAM REBASE” section of the linked man page for details.)
That said, if you’re currently on a branch with some commits that you want to move to a new parent, it’d look something like this:
That will move everything after
<old-parent>in the current branch to sit on top of<new-parent>instead.