Git interactive rebase no commits to pick

前端 未结 4 1242
無奈伤痛
無奈伤痛 2021-01-30 07:44

I\'m on master and I did rebase -i

Got this:

noop

# Rebase c947bec..7e259d3 onto c947bec
#
# Commands:
#  p, pick = use c         


        
相关标签:
4条回答
  • 2021-01-30 08:16

    When you're using git rebase -i, you usually have to specify, since which commit do you want to perform the rebase. So, if, for example, you want to remove some of the commits among the last 10 to the current branch, you would do:

    git rebase -i HEAD~10
    
    0 讨论(0)
  • 2021-01-30 08:30

    Like a non-interactive rebase, you have to rebase onto a particular commit.

    With a non-interactive rebase, if you supply a direct ancestor of the current commit then you aren't changing anything; with an interactive rebase you can edit commits after the commit that you are rebasing onto, even if the commit is a direct ancestor of your current commit but you do have to specify this commit that you want to edit onwards from.

    I don't know the details of your situation but you might want something like this:

    # Opportunity to edit or prune commits between origin/master and current branch
    git rebase -i origin/master
    

    or

    # Edit some of the last ten commits
    git rebase -i HEAD~10 # Note that ~10 uses a tilde("~") not a dash("-"_) !
    
    0 讨论(0)
  • 2021-01-30 08:34

    rebase -i without a commit range will not display any commits. to rebase the last, say, 7 commits use the following:

    git rebase -i HEAD~7
    

    be careful though, that this will rewrite history. don't do it, if the commits are already pushed


    for your second question: have a branch with your changes (basically a configuration branch) and regularly merge the other branches into it. this way the changes will not move to other branches

    0 讨论(0)
  • 2021-01-30 08:43

    As others have mentioned, you need to specify a commit range.

    git rebase -i <latest-commit-to-be-retained>
    

    (Assuming that you are on the same branch as the commit to be edited)--

    To specify the commits, you can use the HEAD~5 shorthands or use sha checksum (which you can get by git log)

    In fact any commit will do if it is prior/ancestor to the commits which you want to delete/edit/reword in the tree. This will list all the commits since the <latest-commit-to-be-retained> in the editor(defined in your git config). From the list, to delete a commit, just delete that particular line, save and exit (vi habbits :) )the file+editor, and do git rebase --continue

    For the second answer, I agree with knittl

    have a branch with your changes (basically a configuration branch) and regularly merge the other branches into it. this way the changes will not move to other branches

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