设计外贸英文网站,深圳html5网站开发多少钱,泰安吧,杭州的设计网站大全#x1f48c; 所属专栏#xff1a;【Git】 #x1f600; 作 者#xff1a;我是夜阑的狗#x1f436; #x1f680; 个人简介#xff1a;一个正在努力学技术的CV工程师#xff0c;专注基础和实战分享 #xff0c;欢迎咨询#xff01; #x1f496; 欢迎大… 所属专栏【Git】 作 者我是夜阑的狗 个人简介一个正在努力学技术的CV工程师专注基础和实战分享 欢迎咨询 欢迎大家这里是CSDN我总结知识的地方喜欢的话请三连有问题请私信 您的点赞、关注、收藏、评论是对我最大的激励和支持 文章目录 前言一、远程与本地不一致导致提交冲突1、介绍2、示范1提交冲突拉取失败2fetch 更新本地分支提交3merge 更新本地分支合并提交4pull --rebase更新本地分支提交5pull 更新本地分支合并提交 3、实战1第一种方法2第二种方法 总结 前言 大家好又见面了我是夜阑的狗本文是专栏【Git】专栏的第三十一篇文章; 这是今天学习到Git 高级篇 – 远程与本地不一致导致提交冲突 开启新的征程记录最美好的时刻每天进步一点点。 专栏地址【Git】 此专栏是我是夜阑的狗对GitGitee等工具使用过程的总结希望能够加深自己的印象以及帮助到其他的小伙伴。 如果文章有什么需要改进的地方还请大佬不吝赐教。 一、远程与本地不一致导致提交冲突 这里给大家推荐一个好用的 Git在线练习地址。在这练习网站里面也有自己的教程就让我们一步一步跟着教程学习吧记录下自己的所感所悟。前面已经简单的学习了模拟团队合成场景接下来就让我们看看在实际项目过程中是怎么对远程仓库提交本地记录的吧。话不多说让我们原文再续书接上回吧。 1、介绍 现在我们已经知道了如何从其它地方 pull 提交记录以及如何 push 我们自己的变更。看起来似乎没什么难度但是为何还会让人们如此困惑呢困难来自于远程库提交历史的偏离。在讨论这个问题的细节前我们先来看一个例子…… 假设你周一克隆了一个仓库然后开始研发某个新功能。到周五时你新功能开发测试完毕可以发布了。但是 —— 天啊你的同事这周写了一堆代码还改了许多你的功能中使用的 API这些变动会导致你新开发的功能变得不可用。但是他们已经将那些提交推送到远程仓库了因此你的工作就变成了基于项目旧版的代码与远程仓库最新的代码不匹配了。 这种情况下git push 就不知道该如何操作了。如果你执行 git pushGit 应该让远程仓库回到星期一那天的状态吗还是直接在新代码的基础上添加你的代码亦或由于你的提交已经过时而直接忽略你的提交 因为这情况历史偏离有许多的不确定性Git 是不会允许你 push 变更的。实际上它会强制你先合并远程最新的代码然后才能分享你的工作。
2、示范 让我们来看看都有哪些解决方法吧。
1提交冲突拉取失败 说了这么多咱们还是看看实际案例吧 git push看见了吧什么都没有变因为命令失败了git push 失败是因为你最新提交的 C3 基于远程分支中的 C1。而远程仓库中该分支已经更新到 C2 了所以 Git 拒绝了你的推送请求。运行结果如下图所示 2fetch 更新本地分支提交 那该如何解决这个问题呢很简单你需要做的就是使你的工作基于最新的远程分支。有许多方法做到这一点呢不过最直接的方法就是通过 rebase调整你的工作。咱们继续看看怎么 rebase 吧 如果我们在 push 之前做 rebase 呢
git fetch
git rebase o/main
git push我们用 git fetch 更新了本地仓库中的远程分支然后用 rebase 将我们的工作移动到最新的提交记录下最后再用 git push 推送到远程仓库。运行结果如下图所示 3merge 更新本地分支合并提交 还有其它的方法可以在远程仓库变更了以后更新我的工作吗? 当然有我们还可以使用 merge。尽管 git merge 不会移动你的工作它会创建新的合并提交但是它会告诉 Git 你已经合并了远程仓库的所有变更。这是因为远程分支现在是你本地分支的祖先也就是说你的提交已经包含了远程分支的所有变化。 看下演示咱们们用 merge 替换 rebase 来试一下……
git fetch
git merge o/main
git push我们用 git fetch 更新了本地仓库中的远程分支然后合并了新变更到我们的本地分支为了包含远程仓库的变更最后我们用 git push 把工作推送到远程仓库。这里需要注意的是在实际项目过程中如果本地分支和远程分支存在冲突是停留在 git merge 阶段的需要手动解冲突才能进行后续的步骤。运行结果如下图所示 4pull --rebase更新本地分支提交 很好但是要敲那么多命令有没有更简单一点的当然 —— 前面已经介绍过 git pull 就是 fetch 和 merge 的简写类似的 git pull --rebase 就是 fetch 和 rebase 的简写这种方法也是本人最喜欢用的。 让我们看看简写命令是如何工作的。这次用 --rebase 参数……
git pull --rebase
git push跟之前结果一样但是命令更短了。运行结果如下图所示 5pull 更新本地分支合并提交 换用常规的 pull这里需要注意的是在实际项目过程中如果本地分支和远程分支存在冲突是停留在 git merge 阶段的需要手动解冲突才能进行后续的步骤所以 git pull 会提示有冲突拉取失败。
git pull
git push还是跟以前一样运行结果如下图所示 由 fetch、rebase/merge 和 push 组成的工作流很普遍。后续课程我们会讲解更复杂的工作流不过现在我们先解决这个关卡吧。 要完成本关你需要完成以下几步
Step 1、克隆你的仓库Step 2、模拟一次远程提交fakeTeamworkStep 3、完成一次本地提交Step 4、用 rebase 发布你的工作
3、实战 从前面了解到具体的实现的步骤就可以开始实战啦。这里先给大家说一下这个练习网站的一些使用技巧
help 指令 执行这个命令后就会有个帮助信息的弹窗。 levels 指令 执行完这个命令之后就能看到关卡目录了。 目标 开始结构 1第一种方法 在实际项目过程中我们可以直接使用 pull 指令的 rebase 参数来合并冲突接下来就让我们来看看是怎么操作的吧。
Step 1、克隆仓库 首先将远程仓库克隆到本地。
git clone很简单吧运行结果如下图所示 Step 2、模拟远程提交 模拟远程分支提交记录这里相当于远程仓库别的同事也进行了提交。
git fakeTeamework main运行结果如下图所示 Step 3、本地提交 模拟远程提交之后我们就可以在本地分支上提交。
git commit运行结果如下图所示 Step 4、更新本地分支 这里是最关键的一步拉取远程分支数据并以 rebase 的方式合并到本地分支中实际项目过程中可能还需要解一下冲突。
git pull --rebase运行结果如下图所示 Step 5、推送至远程分支 本地分支与远程分支保持同步之后就可以将本地的修改点上传至远程分支了。
git push运行结果如下图所示 2第二种方法 除了第一种方法之外当然也可以 fetch 和 rebase 的组合来进行解决接下来就让我们来看看是怎么操作的吧。
Step 1、克隆仓库 首先我们先把远程仓库克隆下来。
git clone运行结果如下图所示 Step 2、模拟远程提交 模拟远程分支提交记录这里相当于远程仓库别的同事也进行了提交。
git fakeTeamwork main运行结果如下图所示 Step 3、本地提交 模拟远程提交之后我们就可以在本地分支上提交。
git commit运行结果如下图所示 Step 4、拉取远程数据 将远程分支的数据拉取到本地分支但这里注意的是该数据没有合并到本地分支只是提前下载好而已。
git fetch很简单吧运行结果如下图所示 Step 5、合并分支 这里是最关键的一步拉取远程分支数据并以 rebase 的方式合并到本地分支中实际项目过程中可能还需要解一下冲突。
git rebase o/main mian很简单吧运行结果如下图所示 Step 6、上传 本地分支与远程分支保持同步之后就可以将本地的修改点上传至远程分支了。
git push很简单吧运行结果如下图所示 达成目标之后就会有成功的提示。 总结 感谢观看如果觉得有帮助请给文章点个赞吧让更多的人看到。 也欢迎你关注我。 原创不易还希望各位大佬支持一下你们的点赞、收藏和留言对我真的很重要 最后本文仍有许多不足之处欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正下期再见。 更多专栏订阅: 【LeetCode题解持续更新中】 【鸿蒙系统】 【Python脚本笔记】 【Java Web项目构建过程】 【微信小程序开发教程】⚽ 【JavaScript随手笔记】 【大数据学习笔记华为云】 【程序错误解决方法建议收藏】 【软件安装教程】 订阅更多你们将会看到更多的优质内容