git rebase confusion

let’s say if I have 2 branches
top and master
if I am on feature branch, and run git rebase master does it rebase master or rebase topic branch?

doing git rebase --help gave me this

  • Git: Move a few of the last commits to a new branch and then create a patch for them
  • How to version resources that are shared across projects
  • Jenkins pipeline - git branch
  • git remote merge commit causing false dependencies in gerrit
  • How do I create a new branch using TortoiseSVN?
  • Is there any way to exclude branches from showing in GitK?
  • Assume the following history exists and the current branch is “topic”:

                 A---B---C topic
                /
           D---E---F---G master
    

    From this point, the result of either of the following commands:

           git rebase master
           git rebase master topic
    

    would be:

                             A'--B'--C' topic
                            /
               D---E---F---G master
    

    NOTE: The latter form is just a short-hand of git checkout topic followed by git rebase master. When rebase exits topic will remain the checked-out branch.

    And if I want to achieve this D---E---F---G---A---B---C master, should I switch to master and run git rebase -i topic?

    And if I run git rebase -i topic try to squash A,B,C to C to become D---E---F---G---C master, I get noop

  • Collaborating on Android Studio Project using git
  • cannot push into git repository
  • Push to github repo denied
  • ntoskrnl.exe high disk usage when using Visual Studio 2017
  • Git objects SHA-1 are file contents or file names?
  • Restore local master after making commits on it
  • One Solution collect form web for “git rebase confusion”

    Assuming you start out with a tree that looks like this

             A---B---C topic
            /
       D---E---F---G master
    

    You’ll want to run 2 commands git rebase master to make it look like this

                         A'--B'--C' topic
                        /
       D---E---F---G master
    

    then from master run git merge topic, which will do a fast forward merge, and you’ll end up with a tree that looks like this

                                 topic
                                /
       D---E---F---G---A---B---C -- master
    

    Can I just checkout master and run git rebase topic??

    Running that command would result in a tree that looks like this

                                 topic
                                /
       D---A---B---C---E---F---G -- master
    

    This is the (somewhat edited) git documentation for rebase, hopefully this will help:

    All changes made by commits in the current branch but that are not in upstream are saved to a temporary area.

    If you are on topic and run git rebase master, that means commits A, B and C are going into a temporary area.

    The current branch is reset to upstream. This has the exact same effect as git reset –hard upstream.

    At this point the temporary state of the tree looks like this

                     topic
                    /
       D---E---F---G -- master
    

    The commits that were previously saved into the temporary area are then reapplied to the current branch, one by one, in order.

    Commits A, B, C that were saved into the temporary area are “recommitted” to the branch you are currently on topic.

                                 topic
                                /
       D---E---F---G---A---B---C -- master
    

    Running git rebase topic from master would perform the exact same steps, except instead of putting commits A, B, C into the temporary area, it would put commits E, F G into the temporary area.

    Git Baby is a git and github fan, let's start git clone.