您现在的位置是:首页 >技术交流 >【Git】制造冲突以及解决冲突的详细方法网站首页技术交流
【Git】制造冲突以及解决冲突的详细方法
介绍
这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长!
以下为小编最喜欢的两句话:
要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。
一个人为什么要努力? 我见过最好的答案就是:因为我喜欢的东西都很贵,我想去的地方都很远,我爱的人超完美。因此,小编想说:共勉!
目录
第五步:优先使用右边的文件(也可以优先使用左边的文件,看实际情况的需要)
第六步:当最下方那个框中没有红色的行,便代表没有冲突,进行保存编辑
第八步:冲突符号变更为已编辑的表示,进行提交,并推送到远程仓库
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 分支名
具体请看下面文章
报错二:
! [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
,又出现了以下的问题
git merge
fatal: refusing to merge unrelated histories
对于这个问题。使用git pull origin master --allow-unrelated-histories
来处理一下。
4、然后继续git merge
,依然有问题
fatal: You have not concluded your merge (MERGE_HEAD exists).
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 master
git 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的版本上修复】
- 每天上午上班,要从服务器下载最新的代码到本地
- 每天下午下班前,把自己的代码提交到服务器(一定是测试过,没有问题的代码)
- 团队开发时需要解决文件冲突问题
以上就是小编所实践的内容,希望能够帮助到大家,感谢各位大佬的观看!!!
参考资源: