根据我对合并冲突的理解,当两个人更改了同一个文件和/或修改了该文件中的同一行时,就会发生合并冲突。所以,当我做了一个
git pull origin master
我预计会发生合并冲突,因为两个版本的相同行都不同,但看起来git决定覆盖我的本地文件。
要提供更多信息, 几天前我把我的版本推到了Github上。然后有人拉了它,用它工作,并把它推回github。另一个人修改过的两个文件对我很感兴趣。
第一个文件是配置文件,另一个人更改了密码。所以当我从github取出时,我本地版本的密码与github上的密码不同。但是,在我的终端,它说
Auto-merging <filename>
并且,它会覆盖我的文件,密码是由不同人设置的密码。
第二个感兴趣的文件是用模板引擎(PUG)编写的HTML文件。另一个人改变了该文件中的很多东西,比如添加了很多css类,删除了我使用过的一些类,添加了css文件的链接等等。但是当我拉它时,终端甚至没有提到它是自动合并它,只是在我的本地仓库中覆盖了整个文件并使用了Github中的那个。
对于这两个文件,我的问题是,这是否是使用git pull的预期行为,还是我做错了什么?
以下是我使用的命令。
git checkout -b "misc"
git pull origin master
另外,我尝试使用fetch然后手动合并/提交它,但是当我使用fetch时,什么也没发生。文件根本没有变化。
之前我曾经使用过git / github,但从未在使用分支和从github推/拉的团队中进行过广泛的工作。
答案 0 :(得分:3)
检查存储库中的Ctrl + S
,如果配置包含以下内容,git也会选择其他人的更改:
.git/config
如果属实,请删除[branch "master"]
mergeoptions = --strategy-option theirs
行。
递归
...这是拉或时的默认合并策略 合并一个分支。递归策略可以采用以下选项:
我们的此选项会强制冲突的帅哥干净利落地自动解决 赞成我们的版本。来自其他树的更改没有 与我们方面的冲突反映在合并结果上。对于二进制文件 文件,全部内容都来自我们这边。
...
他们的这与我们的相反。