git pull --rebase
为了避免git自动合并代码并且提交无意义记录
Merge branch 'master' of https://git.xx.cc/aa/projectName
请使用来拉取远端代码:
git pull --rebase
也可以一劳永逸:
git config --global pull.rebase true
用户目录下的.gitconfig文件:
[user] name = 张三 email = zhangsan@163.com [color] ui = auto [credential] helper = store [safe] directory = * [diff] tool = vimdiff [difftool] prompt = false trustExitCode = true [pull] rebase = true
除此之外,可以通过 git config -l 命令查看当下项目是否是基于rebase模式pull,如果发现有多个配置pull.rebase的地方,那就得把项目下的.git目录下config文件中的pull.rebase也修改成true,或者将config文件中的pull配置删除掉,才能生效
但需要注意,当本地有未提交的代码时,使用git pull --rebase会报错
Cannot rebase: You have unstaged changes
Please commit or stash them.
这个命令做了以下内容:
a.把你 commit 到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的)
b.然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突
c.从暂存区把你之前提交的内容取出来,跟拉下来的代码合并
所以 rebase 在拉代码前要确保你本地工作区是干净的,如果你本地修改的内容没完全 commit 或者 stash,就会 rebase 失败。
如果本地有暂时不想提交的代码,就先stash,pull完再pop出来。
如果通过git pull --rebase 拉取代码时产生了冲突,git会自动创建一个新分支解决冲突文件,当把冲突文件手动解决后,再运行
git rebase --continue
解决冲突,就会回到原来的分支上。
rebase命令不仅可以拉取代码,还可以用来合并分支:
如果要通过rebase命令将分支branch_a代码合并到master上时:
git checkout branch_a
git rebase master
如果有冲突,解决冲突后再调用git rebase --continue。