- 💌 所属专栏:【Git】
- 😀 作 者:我是夜阑的狗🐶
- 🚀 个人简介:一个正在积极学技能的CV工程师,专注根本和实战分享 ,欢迎咨询!
- 💖 欢迎各人:这里是CSDN,我总结知识的地方,喜欢的话请三连,有题目请私信 😘 😘 😘
您的点赞、关注、收藏、批评,是对我最大的鼓励和支持!!!🤩 🤩 🤩
媒介
各人好,又晤面了,我是夜阑的狗🐶,本文是专栏【Git】专栏的第三十一篇文章;
这是本日学习到Git 高级篇 – 远程与当地差异等导致提交辩论 💖💖💖,开启新的征程,记载最优美的时候🎉,每天进步一点点。
专栏地点:【Git】 , 此专栏是我是夜阑的狗对Git,Gitee等工具使用过程的总结,盼望可以大概加深本身的印象,以及资助到其他的小同伴😉😉。
假如文章有什么须要改进的地方还请大佬不吝见教👏👏。
一、远程与当地差异等导致提交辩论
这里给各人保举一个好用的 Git在线训练地点。在这训练网站内里也有本身的教程,就让我们一步一步跟着教程学习吧,记载下本身的所感所悟。前面已经简单的学习了模仿团队合成场景,接下来就让我们看看在现实项目过程中是怎么对远程堆栈提交当地记载的吧。话不多说,让我们原文再续,书接上回吧。
1、先容
如今我们已经知道了怎样从别的地方 pull 提交记载,以及怎样 push 我们本身的变更。看起来好像没什么难度,但是为何还会让人们云云狐疑呢?困难来自于远程库提交汗青的偏离。在讨论这个题目的细节前,我们先来看一个例子……
假设你周一克隆了一个堆栈,然后开始研发某个新功能。到周五时,你新功能开发测试完毕,可以发布了。但是 —— 天啊!你的同事这周写了一堆代码,还改了很多你的功能中使用的 API,这些变更会导致你新开发的功能变得不可用。但是他们已经将那些提交推送到远程堆栈了,因此你的工作就变成了基于项目旧版的代码,与远程堆栈最新的代码不匹配了。
这种情况下,git push
就不知道该怎样操纵了。假如你实行 git push
,Git 应该让远程堆栈回到星期一那天的状态吗?照旧直接在新代码的根本上添加你的代码,亦或由于你的提交已颠末期而直接忽略你的提交?
由于这情况(汗青偏离)有很多的不确定性,Git 是不会允许你 push 变更的。现实上它会逼迫你先归并远程最新的代码,然后才华分享你的工作。
2、树模
让我们来看看都有哪些办理方法吧。
(1)提交辩论拉取失败
说了这么多,咱们照旧看看现实案例吧!
瞥见了吧?什么都没有变,由于下令失败了!git push
失败是由于你最新提交的 C3 基于远程分支中的 C1。而远程堆栈中该分支已经更新到 C2 了,以是 Git 拒绝了你的推送哀求。运行效果如下图所示:
(2)fetch 更新当地分支提交
那该怎样办理这个题目呢?很简单,你须要做的就是使你的工作基于最新的远程分支。有很多方法做到这一点呢,不外最直接的方法就是通过 rebase调解你的工作。咱们继承,看看怎么 rebase 吧!
假如我们在 push 之前做 rebase 呢?
- git fetch
- git rebase o/main
- git push
复制代码 我们用 git fetch
更新了当地堆栈中的远程分支,然后用 rebase 将我们的工作移动到最新的提交记载下,末了再用 git push
推送到远程堆栈。运行效果如下图所示:
(3)merge 更新当地分支归并提交
尚有别的的方法可以在远程堆栈变更了以后更新我的工作吗? 固然有,我们还可以使用 merge。只管 git merge 不会移动你的工作(它会创建新的归并提交),但是它会告诉 Git 你已经归并了远程堆栈的全部变更。这是由于远程分支如今是你当地分支的先人,也就是说你的提交已经包罗了远程分支的全部变革。
看下演示,咱们们用 merge 更换 rebase 来试一下……
- git fetch
- git merge o/main
- git push
复制代码 我们用 git fetch
更新了当地堆栈中的远程分支,然后归并了新变更到我们的当地分支(为了包罗远程堆栈的变更),末了我们用 git push
把工作推送到远程堆栈。这里须要注意的是在现实项目过程中,假如当地分支和远程分支存在辩论,是停顿在 git merge 阶段的,须要手动解辩论才华举行后续的步调。运行效果如下图所示:
(4)pull --rebase更新当地分支提交
很好!但是要敲那么多下令,有没有更简单一点的?固然 —— 前面已经先容过 git pull 就是 fetch 和 merge 的简写,雷同的 git pull --rebase
就是 fetch 和 rebase 的简写!这种方法也是本人最喜欢用的。
让我们看看简写下令是怎样工作的。这次用 --rebase 参数……
- git pull --rebase
- git push
复制代码 跟之前效果一样,但是下令更短了。运行效果如下图所示:
(5)pull 更新当地分支归并提交
换用通例的 pull,这里须要注意的是在现实项目过程中,假如当地分支和远程分支存在辩论,是停顿在 git merge 阶段的,须要手动解辩论才华举行后续的步调,以是 git pull 会提示有辩论拉取失败。
照旧跟从前一样!运行效果如下图所示:
由 fetch、rebase/merge 和 push 构成的工作流很广泛。后续课程我们会讲授更复杂的工作流,不外如今我们先办理这个关卡吧。
要完资本关,你须要完成以下几步:
- Step 1、克隆你的堆栈;
- Step 2、模仿一次远程提交(fakeTeamwork);
- Step 3、完成一次当地提交;
- Step 4、用 rebase 发布你的工作;
3、实战
从前面相识到详细的实现的步调,就可以开始实战啦。这里先给各人说一下这个训练网站的一些使用本事,
实行这个下令后就会有个资助信息的弹窗。
实行完这个下令之后就能看到关卡目次了。
(1)第一种方法
在现实项目过程中,我们可以直接使用 pull 指令的 rebase 参数来归并辩论,接下来就让我们来看看是怎么操纵的吧。
起首将远程堆栈克隆到当地。
很简单吧,运行效果如下图所示:
模仿远程分支提交记载,这里相当于远程堆栈别的同事也举行了提交。
运行效果如下图所示:
模仿远程提交之后,我们就可以在当地分支上提交。
运行效果如下图所示:
这里是最关键的一步,拉取远程分支数据并以 rebase 的方式归并到当地分支中,现实项目过程中大概还须要解一下辩论。
运行效果如下图所示:
当地分支与远程分支保持同步之后,就可以将当地的修改点上传至远程分支了。
运行效果如下图所示:
(2)第二种方法
除了第一种方法之外,固然也可以 fetch 和 rebase 的组合来举行办理,接下来就让我们来看看是怎么操纵的吧。
起首我们先把远程堆栈克隆下来。
运行效果如下图所示:
模仿远程分支提交记载,这里相当于远程堆栈别的同事也举行了提交。
运行效果如下图所示:
模仿远程提交之后,我们就可以在当地分支上提交。
运行效果如下图所示:
将远程分支的数据拉取到当地分支,但这里注意的是该数据没有归并到当地分支,只是提前下载好而已。
很简单吧!运行效果如下图所示:
这里是最关键的一步,拉取远程分支数据并以 rebase 的方式归并到当地分支中,现实项目过程中大概还须要解一下辩论。
很简单吧!运行效果如下图所示:
当地分支与远程分支保持同步之后,就可以将当地的修改点上传至远程分支了。
很简单吧!运行效果如下图所示:
告竣目标之后就会有乐成的提示。
总结
感谢观看,假如以为有资助,请给文章点个赞吧,让更多的人看到。🌹 🌹 🌹
也欢迎你,关注我。👍 👍 👍
原创不易,还盼望各位大佬支持一下,你们的点赞、收藏和留言对我真的很告急!!!💕 💕 💕 末了,本文仍有很多不敷之处,欢迎各位认真读完文章的小同伴们随时私信互换、品评指正!下期再见。🎉
更多专栏订阅:
- 😀 【LeetCode题解(一连更新中)】
- 🌼 【鸿蒙体系】
- 👑 【Python脚本条记】
- 🚝 【Java Web项目构建过程】
- 💛 【微信小步调开发教程】
- ⚽ 【JavaScript顺手条记】
- 🤩 【大数据学习条记(华为云)】
- 🦄 【步调错误办理方法(发起收藏)】
- 🚀 【软件安装教程】
订阅更多,你们将会看到更多的优质内容!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |