git rebase
-
如其意译,变基操作(改变分支依赖)
通常,我们开发的时候从develop
分支拉取一个新的feature
分支进行开发;由于每个人的分支都是基于develop
分支拉取的,当你开发一段时间之后,可能develop
分支上已经有他人通过测试从test
分支合入develop
分支;此时,如果你要进行测试,准备何如test
分支时,往往先要进行以下操作:git rebase develop
该操作实际上是将你从develop分支拉去
feature
分支的节点移到了当前develop分支的节点,即当前feature分支是基于develop
当前节点的;所以称为变基;
当然,该功能也支持 不同的分支,比如你开始基于develop
分支建立了feature
分支,然后基于feature
分支建立了module1
分支,后来可能module1
可复用并且要先于feature分支上线,需要让module1基于develop
开发,此时就可以进行上述操作; -
合并多个
commit
开发时有时会加入很多无效的commit
,这对code review
会造成一定困难;因此推向远端之前可以使用git rebase
将无效commit
进行合并;# 查询最近三次提交 git log --oneline 710e96df update3 b2df4450 update2 9881b8d0 update1
如果我们需要合并最后两次提交信息,我们可以使用以下命令
# 合并最近两次请求 git rebase -i head~2
执行命令后会出现
-
使用
rebase
保持commit
信息干净
通常,我们拉去远端分支到本地时,会触发merge
操作,同时在commit
中会记录这次合并;但有时我们需要保持提交信息pure,不希望这些合并操作被记录,我们可以使用如下命令:git pull --rebase
执行之后会出现一个vim编辑区,需要注意
pick
和squash
命令:pick
会保留该commit
提交,而squash
会将该commit
与上一个commit
进行合并;所以只需要将无效的commit
信息前的pick
改为squash
即可,然后保存进入下一步;
该步骤需要填写合并之后的
commit
内容,默认是# This is a combination of 2 commits.
你只需要编辑该行即可;
-
git rebase
变基操作的撤销- 如果成功:使用
git reflog
查看包含rebase
在内的commit
信息;每个commit
对应唯一的编号,比如head{12}
,使用git reset --hard head{12}
即可恢复 - 途中解决冲突时,如果需要继续,使用
git rebase --continue
,需要在解决冲突后先git add
才能继续;如果需要结束,使用git rebase --abort
操作终止,会恢复到rebase
之前的节点;
- 如果成功:使用
git文件名大小写问题
git
默认会忽略文件名的大小写问题;也就是说你只是修改文件名大小写变换的情况下,git status
是无记录的,暂存区为空;
此时,可以使用git mv
命令对文件重命名,这样才可以可以记录更改;
如:
git mv src/OcrTech.js src/orcTech.js
使用远程分支强制覆盖本地分支
有时候本地分支更改乱了,不容易恢复,需要使用远程分支覆盖本地分支,可以使用如下命令:
git reset --hard origin/分支名
修改最近一次提交的信息
git commit --amend
展示本地分支与远端分支的对应关系
git remote show origin
彻底删除分支(删除本地追踪分支)
git remote prune origin