git 处理冲突
-
处理冲突
Jerry正在wchar_support分支上。他更改了功能的名称,并在测试后提交更改。上面的命令产生以下结果-验证代码后,他提交更改。上面的命令将产生以下结果- -
在master分支中执行更改
同时,在master分支中,Tom还更改了相同功能的名称,并将其更改推送到master分支。上面的命令产生以下结果验证差异后,他提交更改。上面的命令将产生以下结果-在wchar_support分支上,Jerry为宽字符串实现了strchr函数。测试之后,他提交并将更改推送到wchar_support分支。上面的命令产生以下结果-验证后,他提交更改。上面的命令将产生以下结果- -
解决冲突
Tom想要了解Jerry在其私有分支上正在做什么,因此,他尝试从wchar_support分支中提取最新更改,但是Git中止操作并显示以下错误消息。上面的命令产生以下结果-解决冲突从错误消息中可以明显看出src/string_operations.c中存在冲突。他运行git diff
命令以查看更多详细信息。上面的命令产生以下结果-由于Tom和Jerry都更改了相同函数的名称,因此git处于混乱状态,它要求用户手动解决冲突。Tom决定保留Jerry建议的函数名称,但他保留他自己添加的注释。删除冲突标记后,git diff
将如下所示。上面的命令产生以下结果。Tom修改了文件后,他必须先提交这些更改,然后才能提交更改。Tom解决了冲突,现在拉操作将成功。 -
小知识
GNU/Linux和Mac OS使用换行符(LF)或换行符作为换行符,而Windows使用换行符和回车符(LFCR)组合来表示换行符。为了避免由于这些行尾差异而导致不必要的提交,我们必须配置Git客户端以将同一行结尾写入Git存储库。对于Windows系统,我们可以配置Git客户端以在签出(checkout)时将行尾转换为CRLF格式,并在提交操作期间将它们转换回LF格式。以下设置将很有用。对于GNU/Linux或Mac OS,我们可以将Git客户端配置为在执行结帐操作时将行尾从CRLF转换为LF。