git变基

拉取代码时变基

  • 当本地提交代码之后再拉取代码时会产生类似如图的效果,继续执行git pull便会产生merge
  • 这时可以使用 git pull --rebase便不会产生merge了
  • 如果出现冲突,可以先解决冲突,然后执行 git rebase --continue,若要取消操作,则执行git rebase --abort
  • 两者的过程如下:
    1. git pull是先git fetch,然后git merge origin/master
    2. git pull --rebase是先git fetch,然后git rebase origin/master
  • 全局设置,git config --global --add pull.rebase true,即执行git pull自动执行git pull --rebase
  • 取消,git config --global --unset pull.rebase

两个分支的变基

  • test分支的代码合并到master分支

    1
    2
    3
    4
    git checkout test
    git rebase master
    git checkout master
    git merge test

同一个分支变基

  • 删除某次提交

    1. 复制删除的那次提交之前的commitId
    2. git rebase -i [commitId]
    3. 修改需要删除的commit之前的pickdrop
    4. 如果是vim编辑器,则输入i为编辑,按esc键为退出编辑状态,wq为保存并退出
    5. 如果是nano编辑器,则ctrl+x,然后输入y,再按entry为保存并退出
    6. 拉取变基之后的代码 git pull --rebase
    7. 修改默认编辑器为vim git config ---global core.editor vim
    8. 产生的提交数的原因:
      • drop之前的不会修改commitId
      • drop之后的会修改commitId,则该修改也会变,即会产生提交