学习 git,碰到的最大问题应当就属冲突问题了,一直没整明白。我和同学一起研究了下冲突问题,网上各种方法也试了,虽然也可解决,但是貌似不顺畅。所以来社区求助了。问题如下:
在 github 上建了一个测试库,然后在里面新添加了一个文件,然后和同学各自 clone 一份到本地,同时对同一文件进行修改 (并且是同一地方,都是在文件末尾追加),分别 add——commit,然后我让同学先 push(当然 push 前最好先 pull 了),然后我再 pull,这时 pull 便会产生冲突。请问这个冲突怎么解决呢?刚才试过执行 git mergetool,貌似可以解决,不过不确定。不知道有没有其他方法可以解决?
@jimrokliu @kgen 非常感谢。开始网上找了答案,貌似也是这样说的,不过试了下没成功。刚才看了回复后,手动合并冲突后,add——commit,就成功了。。。真的不得不说每次看网上答案总感觉心里没底,得到别人的回复后,感觉像吃了颗定心丸似的。
你 pull 下来 git 会提示有冲突啊,然后你冲突的文件,寻找用=====隔开的两部分,HEAD 是你的内容,另外一部分是 repos 的内容,然后手工修改保留你想要的部分,在 git add 和 git commit 然后再 git push 上去就好了。多人协作经常都会遇到冲突的,要习惯解决冲突的流程。
#3 楼 @xautjzd 推荐http://git-scm.com/book 读完前 3 章,基本的使用就不用去网上各种搜啦,git 作为一个常用工具还是稍微系统的了解一下比较好。
每次开发前先从 git 上 down 下来最新的代码在 master 上,在 master 基础上建立自己的分支,做的修改在分支提交。push 的代码服务器时候再次 pull master ,然后和本地分支进行合并 merge 后再次 push。这样即使修改同一个文件也不容易冲突
http://git-scm.com/book/zh/Git-%E5%88%86%E6%94%AF-%E8%BF%9C%E7%A8%8B%E5%88%86%E6%94%AF 可以看一下这个,git 官网上有 中文版 的教程
楼主问题解决了,那么下一个问题来了,如果楼主解决了冲突然后 Push 了,而此时楼主的同学更改了另一个文件(与之前冲突文件不是同一个)他想要 push 上去。那么他是否会失败?(之前冲突文件经过楼主修改已经传上去了,那么你同学的本地库上的那个文件与这个文件肯定不同)是否还要再重复楼主的工作解决那个冲突呢?
#17 楼 @xiaochengxu 不会,他的同学直接 pull 即可,会 fast forward
先 pull 后修改另一个文件,那么其实不存在冲突,是一个新的 commit,就没关系了