首先,自己的代码是绝对没有冲突的,为什么?git保存的是修改。是一个动作,而不是一个结果。只有不同人的动作会起冲突,自己与自己的动作永远是串行的。
两个用户同时修改了相同文件的相同区域造成的冲突,这个怎么解决呢?
接下来我们通过一个命令来查看到底是哪些文件发生了合并冲突,这个命令是:git ls-files -s,该命令输出的第二列的值如果为0表示对应的文件没有冲突,合并成功,如果不为0,则表示产生了合并的冲突,其中具体的值对应的意义是:
1表示两个用户之前一个共同版本的对应文件内容;
2表示当前用户对应的文件版本;
3表示合并后的文件对应的远程版本
通过命令:git show :n:filename
查看对应文件的对应版本的内容
在知道了三个版本的文件内容之后,我们就可以手动的对冲突的文件进行手动修改操作了。这里需要注意的是,对应的冲突文件的内容已经发生了改变,里面对应的冲突区域的内容将会同时存在当前分支的内容和远程版本的内容,如下图。我们可以手动对该文件进行修改操作,然后在手动add、commit、push就可以了
如果一个用户将某个文件进行改名,而另一个用户也对该文件进行改名,当这两个用户的提交进行合并操作时,就会发生树冲突,因为git无法替用户做选择。下面将对树冲突进行测试并给出解决办法
git ls-files -s
也是执行这个命令,执行完这个命令后,本地和远程就存在处理过的待解决的文件了,这时候处理即可。当然需要查看一下, 看看是哪行有冲突。
git status
命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。git status
不显示已经commit
到项目历史中去的信息。看项目历史的信息要使用git log
.
这几种状态你要十分清楚。
可算明白是怎么回事了,用git restore .就可以了。
git merge也需要记一个,