这个操作执行以下三步:
1.将你修改的本地仓库的内容,取出来放到暂存区(stash)(保证工作区的干净)
2.本地合并多次提交的commit,由于工作区干净,所以不会有冲突
3.从暂存区把你之前提交的内容取出来
所以rebase在拉代码前要保证你的本地工作区是干净的,如果你本地修改的内容没完全commit 或者stash,就会rebase失败。
整个工作流程执行以下命令:
git stash 将本地修改文件保存到暂存工作区
git rebase 合并多次commit
git push -f 推送到远程分支。
----------- git stash ---------------
把修改的本地仓库的内容,取出来放到暂存区 或弹出
git stash 暂存区(stash)
git stash pop 弹出暂存区(stash)文件
git stash list 查看暂存区(stash)列表
---------- git rebase -----------
git log --oneline
git 合并多次commit -i 的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着我们就进入到 vi 的编辑模式
git rebase -i hash_value hash_value是不需要合并的 commit 的 hash 值。
可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。
当前我们只要知道 pick 和 squash 这两个命令即可。