【Git】制造冲突以及解决冲突的详细方法

news/2024/11/28 4:49:06/

介绍

这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长!

以下为小编最喜欢的两句话:

要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。

一个人为什么要努力? 我见过最好的答案就是:因为我喜欢的东西都很贵,我想去的地方都很远,我爱的人超完美。因此,小编想说:共勉!

目录

一、为什么会发生冲突?

二、制造冲突

第一步:

第二步:

第三步: 在本地提交,并推送到远程仓库

第四步:发生冲突

三、解决冲突

方法一、在图形化界面中进行

第一步:先不点击拉取,将上述的框"×"掉,右击点击同步

第二步:出现冲突文件的标识

 第三步:查看本地的文件标识

第四步:右击,点击编辑冲突

第五步:优先使用右边的文件(也可以优先使用左边的文件,看实际情况的需要)

 第六步:当最下方那个框中没有红色的行,便代表没有冲突,进行保存​编辑

第七步:跳出弹窗,标记为解决

 第八步:冲突符号变更为已编辑的表示,进行提交,并推送到远程仓库

 第九步:完成

方法二、在命令行中进行

第一步:打开命令行

 第二步:提交文件 ,并发生了冲突

第三步:解决冲突

 在命令行中出现其他的报错信息的解决方法

报错一:

解决方法:

1.将所要push的内容所在的分支的protected权限关闭

2.新建其它分支,将项目push到新建的分支上,后期再进行merge

报错二:

报错三:(也就是本文报的错误)

报错四:

四、开发注意事项


一、为什么会发生冲突?


在gitee中创建文件或者在文件中修改代码,且在本地操作本地没有进行同步更新,就进行修改或者创建并且提交  就会发生冲突(相当与你和你同事前后修改了代码并提交,但是并没有在提交之前拉取进行更新)

注意:git与svn不同的是,svn自动会对比哪里出现了冲突,而git是要自己手动pull拉取更新之后才会进行对比并显示发生冲突的提示
 

二、制造冲突

第一步:

在gitee中编辑一个文件中的内容并提交,或者创建一个文件输入内容并提交,小编这里是编辑文件中的内容并提交

第二步:

在本地也编辑文件内容并提交,或者创建一个文件输入内容并提交,小编这里是编辑文件中的内容并提交

第三步: 在本地提交,并推送到远程仓库

第四步:发生冲突

这里只演示在本地的图形化界面进行冲突的制造,命令行也是同上步骤一样,在一个电脑或者文件夹、gitee中进行文件内容的编辑/创建文件输入内容并进行提交,如是在本地的图形化界面进行提交,还需要进行推送,将文件推送到远程仓库。然后在另一个电脑或者文件夹中进行文件内容的编辑/创建文件输入内容并进行提交,且推送到远程仓库。

三、解决冲突

方法一、在图形化界面中进行

第一步:先不点击拉取,将上述的框"×"掉,右击点击同步

第二步:出现冲突文件的标识

出现下面代表,文件被修改了,需要再次提交并推送

 

 第三步:查看本地的文件标识

冲突文件标识,下图中的黄色带感叹号三角形

第四步:右击,点击编辑冲突

 

第五步:优先使用右边的文件(也可以优先使用左边的文件,看实际情况的需要)

 第六步:当最下方那个框中没有红色的行,便代表没有冲突,进行保存

第七步:跳出弹窗,标记为解决

 

 第八步:冲突符号变更为已编辑的表示,进行提交,并推送到远程仓库

 第九步:完成

方法二、在命令行中进行

第一步:打开命令行

 第二步:提交文件 ,并发生了冲突

出现上面的 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://gitee.com/。。。。

代表发生冲突

第三步:解决冲突

 在命令行中出现其他的报错信息的解决方法

报错一:

! [remote rejected] master -> master (pre-receive hook declined)

解决方法:

git push不上去的原因在于所push的分支权限为protected,只有项目的管理员或者项目的管理员指派的具有相应权限的人才能进行push,要进行项目的push,有如下两种方法:

1.将所要push的内容所在的分支的protected权限关闭

(1)进入所在项目的settings

(2)点击进入Protected branches,点击unprotected将master分支的权限改变,即关闭master的protected权限

2.新建其它分支,将项目push到新建的分支上,后期再进行merge

(1)新建分支

git branch 分支名

(2)切换分支

git checkout 分支名

(3)进行项目上传

git add .git commit -m "提交的信息"git remote add origin 远程仓库地址git push -u origin 分支名

具体请看下面文章

 git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined) - cppeterpan - 博客园 (cnblogs.com)

报错二:

! [remote rejected] master -> master(non-fast-forward)

解决方法:

从提示语中可以看出是,问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:

1、强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容,如果远程仓库是刚建的,没有代码,可以这样操作,尽量避免这种操作方法。

git push -f

2、先把git的东西fetch到你本地然后merge后再push

$ git fetch
$ git merge

3、在使用的时候,git merge,又出现了以下的问题

  1. git merge

  2. fatal: refusing to merge unrelated histories

对于这个问题。使用git pull origin master --allow-unrelated-histories
来处理一下。

4、然后继续git merge,依然有问题

  1. fatal: You have not concluded your merge (MERGE_HEAD exists).

  2. Please, commit your changes before you merge.

这个就好处理了,是我们没有提交当前的变化, git add .,git commit -m "提交信息"

然后再来一次git merge,然后ok.

5、然后输入git pull,显示如下

Already up-to-date.

最后就可以执行git push origin master

报错三:(也就是本文报的错误)

! [rejected]        master -> master (fetch first)

解决方法:

git pull --rebase origin mastergit push -u origin master

报错四:

git add .
git push origin master

出现了这样的问题 everything up-to-date

原因:git提交改动到缓存,要push的时候不会将本地所有的分支都push掉,所以出现这个问题。那么我们就需要新建分支提交改动然后合并分支。

1.先创建一个新的分支提交改动
$ git branch newbranch

2.检查这条命令是否创建成功
$ git branch

这时终端会输出:

newbranch

*master

这样就创建成功了,前面的*代表的是当前你所在的工作分支,接下来就要切换工作分支。

3.git checkout newbranch
4.然后将你的改动提交到新的分支上
$ git add .

$ git commit -m "提示消息"

此时可以$ git status 检查下提交情况。如果提交成功,我们接下来就要回主分支了,$ git checkout master

5.我们将新分支提交的改动合并到主分支上
$ git merge newbranch

合并分支可能产生冲突这是正常的,虽然我们这是新建的分支不会产生冲突,但还是在这里记录下。可以用

$ git diff 来查看产生冲突的文件,然后做对应的修改再提交一次就可以了。

6.我们的问题解决了,接下来就可以push代码了
$ git push -u origin master

7.最后,新建分支的朋友别忘了删除分支
$ git branch -D newbranch

如果想保留分支只是想删除已经合并的部分只要把大写的D改成小写的d就行了。

 冲突中文件的代码:

四、开发注意事项

  • 代码需要备份【主要是防止代码丢失】
  • 每个大版本都需要备份支持【主要是1.0出现问题时,不能在2.0的版本上修复】
  • 每天上午上班,要从服务器下载最新的代码到本地
  • 每天下午下班前,把自己的代码提交到服务器(一定是测试过,没有问题的代码)
  • 团队开发时需要解决文件冲突问题

以上就是小编所实践的内容,希望能够帮助到大家,感谢各位大佬的观看!!!

参考资源:

如何解决git上传文件出错[rejected] master -> master (fetch first) error: failed to push some refs to '_way-up的博客-CSDN博客https://blog.csdn.net/weixin_43264399/article/details/87350219


http://www.ppmy.cn/news/61834.html

相关文章

干掉Config server的两个节点之后会发生什么?

当前MongoDB集群的测试环境的架构有两个分片,每个分片是三个节点的副本集,一个mongos,mongoDB v4.4.20 config server也是三个节点的副本集(configReplSet),直接停掉两个节点之后,关闭步骤的返…

Unity 后处理(Post-Processing) -- (3)挑战:创建局部后处理Volume

为何使用局部Volume 在前面两节中,我们使用了一个Global Volume来应用后处理,其作用范围是整个场景。有些时候,我们需要实现当角色靠近某个地点后,进行一些特殊的后处理。这时我们就需要使用Local Volume来实现这个功能。 举个例子…

手动封装一个日期处理工具类,几乎覆盖了所有的时间操作(收藏)

工具类包含以下方法: - stringToDate: 将字符串转换为java.util.Date类型- dateToString: 将java.util.Date类型转换为字符串- stringToLocalDateTime: 将字符串转换为LocalDateTime类型- localDateTimeToString: 将LocalDateTime类型转换为字符串- dateToLocalDat…

Apache Doris学习记录

1. Doris基础学习 中文官网:https://doris.apache.org/zh-CN/docs/dev/summary/basic-summary/ 1.1 doris 简介 Apache Doris 是一个现代化的 MPP(Massively Parallel Processing,即大规模并行处理) 分析型数据库产品 亚秒级响应时间即可获得查询结果 可以支持 10PB…

【嵌入式环境下linux内核及驱动学习笔记-(9-内核定时器)】

目录 1、时钟tick中断等概念2、延时机制2.1 短延时(忙等待类--非阻塞害)2.1.1 ndelay 忙等待延迟多少纳秒2.1.2 udelay 忙等待延迟多少微秒2.1.3 mdelay 忙等待延迟多少毫秒 2.2 长延迟:忙等待 (非阻塞类)2.2.1 time_a…

ChatGPT :国内免费可用 ChatGPT +Midjourney绘图

前言 ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI 研发的聊天机器人程序 ,于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言来…

UFC718AE01 HIEE300936R0101什么是 ABB 分布式控制系统?

​ UFC718AE01 HIEE300936R0101什么是 ABB 分布式控制系统? 关于 ABB 类别 什么是 ABB 分布式控制系统? ABB 的分布式控制系统 (DCS) 旨在改变多方面、全天候 24 小时的工业流程。ABB 的控制架构持续分析和推动工厂生产力,最大限度地提高资产…

HTMLCSS

1、HTML 1.1 介绍 HTML 是一门语言,所有的网页都是用HTML 这门语言编写出来的,也就是HTML是用来写网页的,像京东,12306等网站有很多网页。 这些都是网页展示出来的效果。而HTML也有专业的解释 HTML(HyperText Markup Language)…