当前分支拉取master的操作 git rebase master
使用场景
理解rebase
操作步骤
1 git切换至当前开发版本
2 查找需要变基到的branch,不一定是master
3 执行rebase变基
没有冲突的情况
存在冲突的情况
解决冲突
标记冲突已解决
继续rebase 操作
提交到远程分支
以master为准创建分支dev_A 开发,开发过程中,master主分支有新的功能被提交进来,需要将这部分代码align到dev_A的版本.
这里仅列举这一个场景,rebase 还可以修改commit message 请参照我的另一篇文章
理解rebase
rebase 字典翻译为变基。我的理解是:改变基准,以上面的情景为例,以master为基准创建的dev_A,现状master代码有变,我们需要重新以master为基准align代码,也就是修改了当前代码版本的基准版本,这样是不是好理解一些呢?
操作步骤
1 git切换至当前开发版本
git checkout dev_A
切换到当前开发版本是,也就是 dev_A
2 查找需要变基到的branch,不一定是master
git branch
查看所有分支,根据列表中的branch 基准branch
3 执行rebase变基
git rebase master
这里以master为基准,如果是其他版本,git rebase branchname
如果有没有提交的代码,git会提示:
can't rebase : you have unstaged changes.
Please stash or commit them .
执行:
git stash
stash暂存本地仓库,rebase 完成之后再使用 git stash pop 取回这一部分代码。
没有冲突的情况
比如dev_A做的是A模块,master 代码变更进去的是B模块,也假设没有其他共同使用的文件
git rebase master 这一句命令就已经完成了我们的rebase操作,我们dev_A 已经包含了master后来更新进去的文件。
存在冲突的情况
这里我们着重强调存在冲突的情况
解决冲突
git 会提示我们有哪些文件冲突,我们可以在代码编辑器中查看冲突标识符
<<<<
HEADcode
=======
Othercode
>>>>>>>>>>
两个冲突的版本用连续的等号=隔开,便于对比两个版本代码,手动修改使用哪个版本的代码。
标记冲突已解决
git add .
修改完成之后 使用git add . 告诉git 冲突已被全部解决,也可以一个文件一个文件解决之后使用 git add filepath, 这样比较麻烦
继续rebase 操作
git rebase --continue
提交到远程分支
git pull -f
master的代码已经被同步到当前本版dev_A的版本库了。
如果有stash的文件,使用如下命令取回代码
git stash pop