【嵌入式开发 Linux 常用命令系列 8 -- git checkout 解冲突详细介绍】
这篇文章介绍了Git冲突的产生场景及解决方法。当同一文件的同一部分在两个分支都被修改时,Git无法自动合并,会产生包含<<<<<<<、=======、>>>>>>>标记的冲突文件。文章解释了这些标记的含义:<<<<<<< HEAD表示当前分支(ours)内容,>>
文章目录
1. Git 冲突产生的场景
当你在 git merge、git rebase、git cherry-pick 等操作时,如果 同一个文件的同一部分在两个分支中都被修改了,Git 就会无法自动合并,结果是产生冲突。
冲突后的文件中会出现类似这样的标记:
<<<<<<< HEAD
printf("Hello from main branch\n");
=======
printf("Hello from feature branch\n");
>>>>>>> feature
2. 冲突标记符号解释
-
<<<<<<< HEAD
表示 当前分支(即你所在的分支) 的内容,也就是 ours。 -
=======
表示 ours 与 theirs 的分隔符。 -
>>>>>>> feature
表示 要合并进来的分支(目标分支) 的内容,也就是 theirs。
所以:
-
ours = 当前分支(HEAD)
-
theirs = 你要合并的分支
3. git checkout --ours 和 git checkout --theirs
这两个命令在冲突文件存在时使用,可以帮助你快速选择保留哪一方的版本。
语法
git checkout --ours <file>
git checkout --theirs <file>
含义
-
git checkout --ours <file>
把<file>冲突部分全部替换为 当前分支(HEAD,ours) 的内容。 -
git checkout --theirs <file>
把<file>冲突部分全部替换为 合并进来的分支(theirs) 的内容。
使用场景
-
如果你 确信本地分支的修改更正确,执行:
git checkout --ours filename.c -
如果你 确信远端分支的修改更正确,执行:
git checkout --theirs filename.c -
如果想要手动融合两边的修改(而不是简单选择一方),就要编辑冲突文件,把冲突标记符号
<<<<<<<、=======、>>>>>>>删除,并保留你想要的代码。
4. 操作完成后的流程
无论是用 --ours、--theirs,还是手动修改,最后都要:
git add <file>
git commit
Git 会生成一个合并提交(如果是 merge)。
5. 举例演示
假设我们在 main 分支有:
printf("Hello from main branch\n");
在 feature 分支有:
printf("Hello from feature branch\n");
合并时冲突文件会是:
<<<<<<< HEAD
printf("Hello from main branch\n");
=======
printf("Hello from feature branch\n");
>>>>>>> feature
-
如果执行
git checkout --ours file.c→ 文件变成:printf("Hello from main branch\n"); -
如果执行
git checkout --theirs file.c→ 文件变成:printf("Hello from feature branch\n");
总结:
-
ours = 当前分支 (HEAD)
-
theirs = 要合并进来的分支
-
<<<<<<</=======/>>>>>>>是冲突标记,标记 ours 与 theirs 的不同部分。 -
git checkout --ours→ 保留当前分支的修改 -
git checkout --theirs→ 保留合并分支的修改
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)