加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

理解git中的head和master与eclipse 中git解决冲突

(2018-03-07 13:43:21)

git版本控制,有本地和远程,先提交本地,再远程到远程仓库。


理解git中的head和master


在master分支上,HEAD指向master,而master指向的是最近的一次提交。如下图


http://img.blog.csdn.net/20141230143856975?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmRzczU4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center中git解决冲突" />

当我们新建分支时,比如新建分支Dev,Dev会指向当前master分支的最近一次提交。

当我们使用命令:

 

[plain] view plain copy
  1. git checkout dev  


切换到Dev分支后,HEAD就指向当前分支Dev了。

 

http://img.blog.csdn.net/20141230143916421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmRzczU4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center中git解决冲突" />

在Dev上修改,比如修改helloworld.c,然后提交,分支Dev指向当前分支的最新提交,而master指向master分支的最新提交。

http://img.blog.csdn.net/20141230143942948?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmRzczU4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center中git解决冲突" />

切换回到master分支:

 

[plain] view plain copy
  1. git checkout master  


然后再master分支上查看helloworld.c,我们发现并没有被修改。

 


为了将在分支Dev上所做的修改也作用的master分支上,也就是说将Dev分支合并(merge)到master分支上。

 

[plain] view plain copy
  1. git merge dev  


这时候master指向了Dev的最近一次提交。而head指向当前分支即master。

 


http://img.blog.csdn.net/20141230144015116?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmRzczU4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center中git解决冲突" />


当利用分支Dev做好修改工作后,就可以把Dev删除掉。兔死狗烹,卸磨杀驴。

 

[plain] view plain copy
  1. git branch -d dev  


http://img.blog.csdn.net/20141230144036207?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmRzczU4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center中git解决冲突" />

 


eclipse 中git解决冲突


1、工程->Team->同步:


http://dl.iteye.com/upload/attachment/0076/6093/c546096f-cd3f-3413-a4ab-ec285a458e8f.png
 2、从远程pull至本地,就会出现如下内容:


http://dl.iteye.com/upload/attachment/0076/6097/46e12895-073e-3b5e-8e06-c77bada8f8ed.png
 3、使用Merge Tool,执行第二项


http://dl.iteye.com/upload/attachment/0076/6099/9933bcf5-8377-34f7-a30f-28092cde51f0.png中git解决冲突" />



http://dl.iteye.com/upload/attachment/0076/6101/06255394-0843-3d1c-9529-1d6fe5cbfefe.png中git解决冲突" />

使用HEAD合并后的效果:

 
http://dl.iteye.com/upload/attachment/0076/6103/0a884df0-a280-3666-9218-6d12c784b192.png中git解决冲突" />

4、再手动修改


http://dl.iteye.com/upload/attachment/0076/6105/7a4ea6cb-77a6-3bb3-8751-af21d8846964.png中git解决冲突" />


 4、修改后的文件需要添加到git index中去:


http://dl.iteye.com/upload/attachment/0076/6107/f46a0499-6ff9-321f-b82c-3adbe972f510.png中git解决冲突" />

 5、冲突文件变为修改图标样式,再提交至本地,此时的提交便是merge合并:


http://dl.iteye.com/upload/attachment/0076/6109/85e3add5-0582-3b29-8559-4da082f38df4.png中git解决冲突" />


http://dl.iteye.com/upload/attachment/0076/6111/51b2b568-026a-3462-86b4-1a337cb448d1.png中git解决冲突" />
 6、此时需要pull的向下箭头和数量没了,注意图标的变化:


http://dl.iteye.com/upload/attachment/0076/6115/5213fe74-be85-3b2c-b178-2e4925e5557a.png中git解决冲突" />
 7、现在可以直接push到远程了:


http://dl.iteye.com/upload/attachment/0076/6117/bf8b2965-c897-371c-8698-afb1a195a365.png中git解决冲突" />


http://dl.iteye.com/upload/attachment/0076/6119/902546d1-c75c-3c59-b1f2-375d251285a5.png

 

   此时configure->save and push一步步执行冲突就搞定了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有