How to git commit --amend a commit that's the base of a branch

后端 未结 1 1587
梦毁少年i
梦毁少年i 2021-02-07 09:48

I have branch foo off of master/head. I wanted to ammend the master/head and have these changes picked up on branch foo. I did the following:

git checkout mast         


        
相关标签:
1条回答
  • 2021-02-07 10:47

    All you needed to do was to tell git where to start the rebase from: You can do this

    git rebase --onto master SOMESHA foo
    

    Where SOMESHA is the old master SHA. That is if your tree now looks like this

    * aaaaaa - (master)
    | * bbbbbb - (foo)
    | * cccccc - (old master)
    |/  
    * ffffff
    

    And you do

    git rebase --onto master cccccc foo
    

    Your tree will then look like this.

    * ffffdffffd - (foo)
    |
    * aaaaaa - (master)
    |
    * ffffff
    

    ASIDE: we can use different names for the cccccc commit if you dont like using SHA values.

    > git reflog master
    
    aaaaaa master@{0}: reset: moving to something
    cccccc master@{1}: commit: change the froozle
    ffffff master@{2}: commit: snarf the froozle 
    

    This means we can reference cccccc as master@{1} (AKA, the previous location of master)

    So we could write this rebase as

    git rebase --onto master master@{1} foo
    

    Another description of the commit cccccc is foo^ (AKA, the parernt commit for foo), so we could also write this as

    git rebase --onto master foo^ foo
    

    They all do exactly the same thing, and you may prefer to use different ones in different situations. I usually find the SHA simple to use, as I will often pull up a graph of my repository before performing this kind of operation.

    0 讨论(0)
提交回复
热议问题