【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理

这篇具有很好参考价值的文章主要介绍了【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

     有自己思想,拒绝纯复制黏贴!!!

      有自己思想,拒绝纯复制黏贴!!!

       有自己思想,拒绝纯复制黏贴!!!

       这里说个题外话,现在网上有一种现象让我深恶痛绝,就是很多网友对别人所发的博文不加验证,便进行纯复制转发,我很想知道,转发了之后意义在哪?自己都没有去验证所转发的内容是否有效便进行纯复制转发,你们这是在污染网络环境,每次我遇到问题,网上一搜,搜索引擎前面几页一模一样的答案,而且还不是有效的博文,看着这些千篇一律的东西,真的是让我抓狂!!!小小吐槽一下




----------------------------------------------------------------------------------以下是正文-----------------------------------------------------------------------------------


【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理

一、背景

       上一篇文章(第1篇:Git和Gitea介绍、建立远程仓库以及推送和下拉代码)介绍了一些基础知识和基础操作,接下来我们来讲一下多人协同开发,提交代码时提示冲突,该如何处理?
       在上一篇文章,我们已经建好了一个远程仓库GitTest,仓库里只推送过一个文件test.txt,该文件的全部内容是十个0。
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       现在,我们再建多一个measurement.txt文件,该文件的全部内容是十个哈,并提交到本地仓库的master分支上,同时推送到远程仓库的origin/master远程分支上,
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       我们先大概说一下,冲突是怎么产生的?为什么会报冲突?
       
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理

二、模拟场景

       我们先模拟一个场景:我(小林)和小马两个人协同开发一个GitTest项目。我和小马同时到远程仓库拉取代码,拉取代码后,此时我们各自的个人电脑上都有GitTest项目,项目里都只有两个文件,test.txt(文件的全部内容是十个0)和measurement.txt(文件的全部内容是十个哈)。

1、第一种情况:我和小马两个人都只对test.txt文件进行了修改,并提交推送

       首先,小马对test.txt文件进行了修改,将文件内容修改成“0000000000小马”,并将本次修改推送至远程仓库,(我没有两个账号,所以小马的这些操作由我直接到远程仓库上修改,来模拟小马修改的推送)
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       此时,我并未拉取最新代码,我的个人电脑上的test.txt文件的文件内容依旧是“0000000000”。这个时候,我也对test.txt文件的内容进行修改,修改成“0000000000小林”,紧接着将其提交到本地仓库,再将其推送到远程仓库,这个时候是一定会报冲突的,
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       “Cancel”按钮一看就知道是什么意思,我就不用讲了吧,“Rebase”按钮先不管,后面讲版本回滚的时候再讲它,主要讲一下“Merge”按钮,Merge是合并的意思,我们先点一下这个按钮,会弹出以下红色圈中的窗体,
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       大伙看一下上图黄色圈中的字样,如果大伙有在命令提示符(Git Bash Here,类似于cmd,不过比cmd拥有更丰富的字体颜色)使用git merge命令,就有可能看过这些字样,大概说明一下,“<<<<<<< HEAD              = = = = = = =              >>>>>>> origin/master”是冲突标记符;“<<<<<<< HEAD”和“= = = = = = =”中间的内容是你此时准备推送的内容里发生冲突的部分;“= = = = = = =”和“>>>>>>> origin/master”中间的内容是远程仓库的内容里与你推送内容相冲突的部分。
       假设你在命令提示符(Git Bash Here)里处理冲突,那就是先对两个内容(即0000000000小林和0000000000小马)进行取舍,最后把冲突标记符删掉就可以了。
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       但如果你是在开发集成软件IDEA上处理冲突,那就比较好操作了,IDEA特别人性化,它提供了各种可能性的快捷按钮,比如“Accept Yours”按钮、“Accept Theirs”按钮、“Merge…”按钮。我们主要讲一下“Merge…”按钮,我们先点一下,会弹出以下窗体,
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       我们的处理是,将中间窗口的内容更改成“0000000000小马林”,然后点击“Accept”按钮,会弹出以下小窗体,点击“Apply Changes and Mark Resolved”按钮,
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       此时,我们用git log命令查看一下,如下,
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       由此我们可以知道,此时我的工作区和本地仓库已经是最新提交了,内容为“0000000000小马林”,而远程仓库还不是最新提交,所以,我们现在要做的是,将我的本地仓库推送到远程仓库上便可以了,
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理

2、第二种情况:小马对test.txt文件进行了修改并提交推送,我对measurement.txt进行了修改并提交推送

       首先,我和小马两个人先拉取最新的代码版本(即test.txt文件的文件内容是“0000000000小马林”,measurement.txt文件的文件内容是“哈哈哈哈哈哈哈哈哈哈”)。
       接着,小马将test.txt文件的文件内容修改为“0000000000小马林       1111111111小马”,
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       此时,我并没有拉取最新代码,而是直接在我个人电脑上对measurement.txt文件进行修改,将其内容修改为“哈哈哈哈哈哈哈哈哈哈       1111111111小林”,
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       紧接着,我将其进行提交推送,它会提示代码冲突,
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       此时,我们点击“Merge”按钮,它就会帮我们直接合并,还会帮我们将其推送到远程仓库,没有第一种情况那么麻烦,不需要自己手动整合内容和手动再次推送。
【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理
       为什么和第一种情况的处理方式有些许不同呢?这是因为第二种情况,我和小马修改的文件没有重叠,小马修改的是test.txt文件的文件内容,而我修改的是measurement.txt文件的文件内容,它们并没有产生二级冲突,所以合并相比第一种情况就比较简单。

三、总结

       详细点来说,冲突分两个级别,一级冲突和二级冲突(我个人自己定义的)。
       当你准备进行推送的时候,如果推送前的版本不是此时远程仓库的最新版本,那么便会报一级冲突;报一级冲突的时候,进行合并操作,如果你推送的版本所涉及的文件与此时远程仓库修改了的文件没有重叠,便可以直接合并,如果重叠了,便会出现二级冲突,此时便需要你手动合并,即手动整合内容和手动再次推送。

四、为什么别人都说“push之前先pull”?

       至于为什么别人都说“push之前先pull”?有一个原因就是,他们都是以话传话,你问他为啥要这么做?他就会说以前带我的人就是这么说的,他们自己也不知道为什么。
       你们看了我上面的例子,应该会有些感悟吧!其实“先pull再push”和“先push再pull”,往大了说,没啥差别,该报冲突照样报冲突,但往细了讲,确实“先pull再push”会更好一点,为什么这么说呢?请往下看!
       假设在你准备push之前,已经有同事push上去一个新版本了,然后如果你是“先push再pull”,这个百分百会报冲突;但如果你是“先pull再push”,便不一定会报冲突,因为你进行pull的时候,如果是出现类似上面说的第二种情况的话(即双方修改的文件不重叠),那么人性化的IDEA便会将远程仓库的内容和你此时工作区所做的修改进行自动合并,并显示在你的工作区,然后你再进行push便可以了。
       所以说,“先pull再push”相对于“先push再pull”来说,会方便好用一点,但是你不嫌麻烦的话,其实这两种是一样的。
|=============================================================================|

【IDEA Git系列(共x篇)】文章清单

总结篇:Git使用总结
第1篇:Git和Gitea介绍、建立远程仓库以及推送和下拉代码
第2篇:提交代码时提示冲突如何处理(此时在这里)
第3篇:如何回退版本
|=============================================================================|文章来源地址https://www.toymoban.com/news/detail-405422.html

到了这里,关于【IDEA Git系列(共x篇)】第2篇:提交代码时提示冲突如何处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git提交代码冲突

    用idea2023中的git提交代码,出现 error: Your local changes to the following files would be overwritten by merge: ****/****/****/init.lua Please commit your changes or stash them before you merge. Aborting 出现这个错误可能是因为你的本地修改与远程仓库中的内容发生了冲突。即使你删除了 init.lua 中的修改,Git仍然

    2024年02月20日
    浏览(41)
  • IDEA git 代码已经commit,但未 push推送,如何撤销提交缓存区代码

    记录自己提交代码时,手滑错误commit了多余的文件,但未push到云端,想要撤回整个commit的操作: idea菜单栏上的 VCS–Git–Reset HEAD…     此时按照图中选择回退的方式,以及回退到哪个版本,点击“Reset”即可,在\\\"Version Control\\\" 中 “log” 里,最新一次提交的记录消失即回退

    2024年02月10日
    浏览(72)
  • idea提交代码时gitee显示别人的名字,如何更改git信息

    在公司中刚入职只能用别人的账号,导致一直都是用别人的账号提交代码 点击应用,最后重启idea中,就会让你重新输入账号和密码,更改完之后可以再次勾选回原来状态,就不用重启再输入密码 代码如下(示例): 代码如下(示例): 以上就是今天要讲的内容,本文仅仅

    2024年02月03日
    浏览(81)
  • git使用常见问题(提交代码,合并冲突)

    git fetch 获取远程分支更新 git branch 查看本地分支 git branch -r 查看远程分支 git branch -a 查看所有分支(本地分支和远程分支) git clone 地址 克隆代码 git checkout 切换分支 git pull 同步到本地(拉) git push 推送至服务器 git checkout -b dev origin/master 基于主分支创建dev分支 git add . 添加

    2024年02月03日
    浏览(82)
  • git必备知识 git使用常见问题(提交代码,合并冲突)

    git fetch 获取远程分支更新 git branch 查看本地分支 git branch -r 查看远程分支 git branch -a 查看所有分支(本地分支和远程分支) git clone 地址 克隆代码 git checkout 切换分支 git pull 同步到本地(拉) git push 推送至服务器 git checkout -b dev origin/master 基于主分支创建dev分支 git add . 添加

    2024年02月16日
    浏览(58)
  • vscode中git拉取、提交代码、解决冲突,以及合并代码的操作

    场景:本地有修改代码,远程仓库没有更新,这时本地想要提交代码。 步骤:本地修改了testA文件内容-本地先暂存提交-拉取-推送; 本地修改了testA文件内容 本地先暂存提交 拉取 推送 远程仓库上就可以看见提交记录了 解决冲突场景:本地有修改代码,远程仓库同时有更新

    2024年02月05日
    浏览(66)
  • Git 代码提交到远程主分支后发生冲突或者覆盖

    在提交代码的时候,有两个人,比如叫A与B,现在A从远程主分支master拉了代码到自己本地,本地电脑形成local A与local B分支,然后写了自己的需求代码commit并推送到远程仓库,形成自己的origin A与origin B,然后两个人进行合并请求merge request,请求merge后,master主分支里代码少了

    2024年02月07日
    浏览(68)
  • 使用git时候提交时候发生冲突,你能解释冲突如何产生,你是如何解决的

    Git冲突情况举例: 简单来说就是本地修改的文件和目标远程库的同一个文件都有修改。这时无论是pull/push/merge时都会产生冲突。 1、不同分支下的merge 比如在不同分支下进行分支合并时,我们在本地修改了a文件并把a文件的修改push到了test分支下,接着我们切换到master分支下将

    2024年02月08日
    浏览(53)
  • git代码管理操作全流程之一: 提交、更新、解决冲突、合并等操作

    Step 1, 检查自己的代码改动。执行 git commit -am\\\"\\\"  提交到本地仓库。注意写好准确的描述信息。 Step 2 ,执行 git pull --rebase ,将当前分支的代码更新到远程仓库的最新版本。如果有冲突解决冲突。解决git冲突请见后续介绍。 Step 3 ,上述步骤执行结束,测试代码。在git bash 命

    2024年02月16日
    浏览(56)
  • Java后端入职第二天,Git代码提交冲突优雅解决

    现在大部分公司开发基本是使用Git作为版本管理的工具,除非一些比较老或者传统的公司还在使用SVN。Git也有很多平台,包括阿里的codeup,码云,gitlab,以及GitHub,甚至有的还会自己去搭建版本管理平台,但是,最终使用的命令还是Git,所以大家只要熟悉使用git命令即可。本

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包