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。

posted @ 2023-05-23 13:13  童年的回忆  阅读(745)  评论(0编辑  收藏  举报
如果本博客解决了您的问题,可以微信支付宝打赏鼓励一下作者哦,在此表示感谢