rebase 重新定义base起点来保持线性提交
a.git rebase master 下载远程仓库最新代码并与本地工作区合并,有冲突就解决冲突,
b.git add . 缓存本地更改到本地仓库
c.git rebase --continue 合并代码继续提交
git pull --rebase gitpull同时执行merge相当于 git pull +git merge
git config --global pull.rebase true 全局配置git pull的时候执行--rebase
git rebase合并分支
git rebase branch
比如合并开发分支dev到master
1.git checkout localdev ---->切换到本地开发分支如果已经在本地开发分支可忽略
如果localdev有一个功能开发的多次提交建议合并提交历史,如果不进行这一步,在git rebase master时可能会多次解决冲突,如果每个历史都与master上最新代码冲突了话需要一一解决如果合并了就只需要解决一次了
2.git rebase master---->解决冲突--->git rebase --continue
3.git checkout master ---->切换到master分支
git merge localdev ---->合并dev分支到master分支
4.git push ---->推送合并后的代码
修改历史commit
修改最近commit
git commit -a --amend
-a所有的更改
--amend 会将更改添加到最近一个提交中
修改更早的commit
1、git rebase -i HEAD~3
在默认编辑器打开最近三次commit内容行前pick为e或者edit(按下i/a进入编辑模式)
最新的提交在最下方,第一行必须为pick
2、esc+:wq退出
3、git commit --amend 开始修改修改日志
4、git rebase --continue 保存修改
git rebase --abort 放弃本次修改
5、未提交:git push
已提交到远端 git push -f/--force origin HEAD:branch名
合并commit
1、git rebase -i commitid/git rebase -i HEAD~3 打开需要合并的最早提交上一个commitid/打开最近三次commit
2、除却需要保留的commit信息行前保持pick,其他行pick改为s或squash
第一行必须保持为pick
3、esc+:wq退出
4.在commit message修改message按i进入编辑模式
5、未提交:git push
已提交到远端 git push -f/--force origin HEAD:branch名
拆分commit
1、git rebase -i commitid/git rebase -i HEAD~3 打开需要拆分提交上一个commitid/打开最近三次commit(按下i/a进入编辑模式)
2、将需要拆分的commit行前的pick 改为edit
最新的提交在最下方
3、esc+:wq退出
4、git rm --cached file ---->处理缓存区文件把需要拆分的内容移除缓存区
可用git diff 上个版本的commitid 需要修改的commitid --stat来查看这个版本提交的内容
--stat 只显示发生变更的文件名 否则显示全部文件2个版本之间的差异
然后用git rm --cached file 把需要拆分的内容移除缓存区
5、git commit --amend -m "commit content" 将余下缓存区内容提交一次
--amend 追加提交,它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中
6、git add file --->把刚刚移除的内容添加回缓存区
7、git commit -m "commit content"
8、git rebase --continue 保存修改
git rebase --abort 放弃本次修改
修改commit顺序
1、git rebase -i commitid/git rebase -i HEAD~3 打开需要拆分提交上一个commitid/打开最近三次commit(按下i/a进入编辑模式)
2、把需要调换位置的pick行调换位置
3、esc+:wq退出
4、git rebase --continue 保存修改
git rebase --abort 放弃本次修改







网友评论