• Home
  • About
    • Jiabin's Room photo

      Jiabin's Room

      There is no royal road to learning.

    • Learn More
    • Email
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

几行代码解决git冲突

20 Jan 2019

Reading time ~1 minute

问题

  协同工作的项目中我们常常会碰到git pull冲突的情况。如果可以auto merge便好,万一不能auto merge,可以参考本文提供的解决方法。
  这边先上两张图,之后可以照着这两张图来理解相关代码。
git 代码可视化
git 代码可视化

解决

  考虑到很多人只想要解决方案,我这边就直接上代码了。

$ git pull 
/*
	error arise
	error: Your local changes to 'c/environ.c' would be overwritten by merge.  Aborting.
	Please, commit your changes or stash them before you can merge.
*/
$ git stash
$ git pull
$ git stash pop
/*
	if auto_merge works, then you can stop here.
	else go ahead...
*/
/*
	open conflicting file, then modify.
*/
$ git push origin master

  切换太麻烦直接写的英文,理解起来应该不是大问题。

分析

  接下来就是对那几行代码的分析了。

$ git pull 
	/*
	这边就是最初的pull操作,既然你来看这篇文章了,这说明你看到了跟上面代码里面差不多的错误
	*/
$ git stash		//这边作用是先将本地修改存储起来
$ git pull		//有了上面的操作之后,工作区就没有所谓的修改文件了,因为都在缓存区了,可以安心pull到工作区了
$ git stash pop	//还原暂存的内容,这个时候缓存区恢复的文件会跟pull下来的文件进行自动merge,结果有两种,一种是auto_merge 成功,这个时候就到此为止。项目pull成功。如果出现失败,则在进行下一步。
/*
这边需要你按照代码提示,打开你的冲突文件,如下
<<<<<<< Updated upstream
    <div id="comments"></div>
    <script>
        new Valine({
            el: '#comments',
=======
    <div id="vcomment"></div>
    <script>
        new Valine({
            el: '#vcomment',
>>>>>>> Stashed changes
并对冲突的地方进行修改。其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。
*/
$ git push origin master//最后保险起见,再push一下

参考内容

https://www.cnblogs.com/cb0327/p/5066685.html
http://www.cnblogs.com/wteam-xq/p/4122163.html




评论版块需要fan墙,如果需要请fan墙后操作。
游客评论无法接受回复提醒邮件。
之前也用了别的评论系统,但还是觉得这个比较好,功能比较全。



冲突git Share Tweet +1