Git Git 两人同时修改同一文件冲突问题

xautjzd · 2013年12月05日 · 最后由 ninehills 回复于 2016年07月13日 · 77489 次阅读

学习 git,碰到的最大问题应当就属冲突问题了,一直没整明白。我和同学一起研究了下冲突问题,网上各种方法也试了,虽然也可解决,但是貌似不顺畅。所以来社区求助了。问题如下:

在 github 上建了一个测试库,然后在里面新添加了一个文件,然后和同学各自 clone 一份到本地,同时对同一文件进行修改 (并且是同一地方,都是在文件末尾追加),分别 add——commit,然后我让同学先 push(当然 push 前最好先 pull 了),然后我再 pull,这时 pull 便会产生冲突。请问这个冲突怎么解决呢?刚才试过执行 git mergetool,貌似可以解决,不过不确定。不知道有没有其他方法可以解决?

修改一下,然后再 commit,再 push

人工合并冲突后 commit 就行

@jimrokliu @kgen 非常感谢。开始网上找了答案,貌似也是这样说的,不过试了下没成功。刚才看了回复后,手动合并冲突后,add——commit,就成功了。。。真的不得不说每次看网上答案总感觉心里没底,得到别人的回复后,感觉像吃了颗定心丸似的。

我觉得一般是先跟对方沟通,然后人工合并冲突,提交来着。 沟通很重要。

少用 pull, 用 command + T

你 pull 下来 git 会提示有冲突啊,然后你冲突的文件,寻找用=====隔开的两部分,HEAD 是你的内容,另外一部分是 repos 的内容,然后手工修改保留你想要的部分,在 git add 和 git commit 然后再 git push 上去就好了。多人协作经常都会遇到冲突的,要习惯解决冲突的流程。

没有冲突的 merge 还能叫 merge 吗?

两个人同时开发一个分支?不应该 fork 然后 pr 么…

#3 楼 @xautjzd 推荐http://git-scm.com/book 读完前 3 章,基本的使用就不用去网上各种搜啦,git 作为一个常用工具还是稍微系统的了解一下比较好。

#8 楼 @cassiuschen 这个不一定啊,根据具体场景来定的

每次开发前先从 git 上 down 下来最新的代码在 master 上,在 master 基础上建立自己的分支,做的修改在分支提交。push 的代码服务器时候再次 pull master ,然后和本地分支进行合并 merge 后再次 push。这样即使修改同一个文件也不容易冲突

这样会把冲突攒很多吧 merge 的时候

一般都是自动 merge 的

#13 楼 @sevk 一般回自动 merge 的,但碰到自动 merge 不了的情况,就不得不采取手动 merge 了

#5 楼 @jeff_duan 不好意思,不是很理解

楼主问题解决了,那么下一个问题来了,如果楼主解决了冲突然后 Push 了,而此时楼主的同学更改了另一个文件(与之前冲突文件不是同一个)他想要 push 上去。那么他是否会失败?(之前冲突文件经过楼主修改已经传上去了,那么你同学的本地库上的那个文件与这个文件肯定不同)是否还要再重复楼主的工作解决那个冲突呢?

#17 楼 @xiaochengxu 不会,他的同学直接 pull 即可,会 fast forward

先 pull 后修改另一个文件,那么其实不存在冲突,是一个新的 commit,就没关系了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号