git pull和git pull -- rebase
来源:互联网 发布:如何找天使投 知乎 编辑:程序博客网 时间:2024/06/05 22:54
在开始对比这两条命令之前,请大家思考三个问题:
1 工作区不干净(没有git add .)可以git pull或者git pull - -rebase代码吗?
结果是不可以,如果你没有将修改提交到暂存区,那么无论是pull还是pull –rebase都是不可以拉下来代码的
接下来我们再多思考下:
2 如果工作区修改提交到暂存区但是没有commit可以调用git pull和git pull - -rebase命令吗?
综上所述我们的结论是:
工作区不commit是无法pull代码的
接下来看push命令:
3 如果工作区修改没有add可以调用git push命令吗?
4 如果工作区修改没有commit可以调用git push命令吗?
综上所述我们的结论是:
工作区不commit是无法push代码的
根据上面的结论我们知道必须commit才可以push和pull代码(也就是说必须有结点才可以pull/push代码)看图我们来分析git pull和git pull - -rebase的区别:
1 远程分支为dev分支,本地分支叫work,当我们从dev分支1拉取到本地的时候,两个分支的起始状态都是1
2 这个时候我们本地分支修改了3,而dev分支其他人推送了2,这个时候就出现了一个问题,我们该如何拉取代码呢?
思路:
1 假如dev分支没有更改,本地分支上一个结点就是dev分支最新结点
那么pull下来的代码最新的结点还是2结点,所以push上去的时候dev最新的结点是2结点
2 假如dev分支有了更改,本地分支上一个结点不再是dev分支最新结点
那么本地分支会新产生一个结点(内部新commit了一个结点,就是我们经常看到的Merge branch**,这个时候本地分支的结点就是1-3-4,push上去的时候dev分支就是1-2-4),这个结点是2和3 merge之后的结果
rebase=re+base,我把他翻译成“重新定义基点,简称重定基”,本地分支最新的结点本来是3,但是我使用git pull –rebase的时候把3修改先隐藏,让本地分支的最新结点变成远端的2结点,再在2结点的基础上增加3结点,这样push的时候dev分支就是3结点而不是merge结点了,这样就可以让我们的所有提交保持成一条线而不是很多merge
confilct处理:
无论是pull还是rebase,当同一个文件被其他人改动之后就会出现冲突,rebase只能做到不出现merge结点但是和pull一样遇到冲突需要自行解决
git pull遇到冲突
这个时候遇到的冲突比较常见,我们一般是手动修改冲突之后再add,commit,push没有什么好讲的了
git pull –rebase遇到冲突
先进入冲突的文件,解决之后使用 add 或者 rm<文件>,之后直接 git rebase –continue即可(注意不用commit,使用add <文件名>而不是add .)
最后如何把让我们使用git pull做git pull –rebase的操作呢?
配置
如果想要把 rebase 当做 git pull 的默认值,可以在 .git/config 加上
[branch “master”]
remote = origin
merge = refs/heads/master
rebase = true
也可以直接加到 ~/.gitconfig 让所有的 tracked branches 都自动套用这个设定:
[branch]
autosetuprebase = always
- git pull 和 git pull --rebase
- git pull和git pull -- rebase
- git rebase & git pull --rebase
- git pull --rebase
- git pull --rebase
- git pull —rebase ?
- git pull和git pull --rebase的不同
- 简单对比git pull和git pull --rebase的使用
- 差异:git clone , git fetch, git pull和git rebase
- git Rebase 与 pull 区别
- 聊下git pull --rebase
- 聊下git pull --rebase
- git fetch, git pull, git pull -rebase区别
- git fetch, git pull, git pull -rebase区别
- git pull,git clone,git fetch,git rebase
- git commit/ git rebase /git pull/git reflog
- Git push/pull/cherry-pick/merge/rebase
- git: fetch vs pull, merge vs rebase
- 图片压缩 SCALE_SMOOTH算法
- Redis学习之事务控制
- PCIe简单介绍
- freemarker之快速入门(一)
- 解决 Sublime text3 中文显示乱码问题
- git pull和git pull -- rebase
- 调用EntityManager出现The import javax.persistence cannot be resolved
- 配置文件保存在exe所在目录
- Books CodeForces
- Redis常用命令之排序函数
- flask使用Blueprint进行多模块应用的编写
- 邻接表(c语言)
- 基于Hexo搭建博客
- 错误解决】The prefix "context" for element "context:component