家里有两台电脑,一台是自己的主力机,另一台是给孩子用的旧笔记本。最近孩子也开始学编程,我们偶尔会一起改同一个项目。一开始没注意,结果一提交代码,Git就报了一堆红色提示——冲突了。
很多人以为Git冲突只发生在公司团队开发中,其实家庭里多人共用一个代码仓库时,也容易碰上。比如你改了main.py的功能,孩子在另一台电脑上加了新功能并先提交了,你再push时,系统就不知道该听谁的,这时候就得靠Git冲突检测来帮忙。
什么是Git冲突?
简单说,就是两个人同时修改了同一个文件的同一部分,Git没法自动合并,只能停下来让你手动决定保留哪段内容。这种情况在家人之间协作写小项目、做作业或者搭家庭博客时特别常见。
怎么让Git提前发现冲突?
最简单的办法是每次写代码前先拉取最新版本:
git pull origin main
这样能确保你本地的代码是最新的。如果你和家人共用一个远程仓库(比如GitHub或Gitee),这一步尤其重要。万一你们都改了config.json里的设置,一个设成白天模式,一个设成夜间模式,不拉最新代码直接改,冲突几乎是必然的。
遇到冲突长什么样?
当你执行git pull或git merge时,如果出现类似下面的提示:
Auto-merging config.json
CONFLICT (content): Merge conflict in config.json
Automatic merge failed; fix conflicts and then commit the result.
说明冲突已经发生。这时候打开那个文件,会看到这样的内容:
<<<<<<< HEAD
theme = "dark"
=======
theme = "light"
>>>>>>> 8f3a2c1 Update theme setting
上面那段<<<<<<< HEAD到=======是你本地的修改,下面是从别人那边拉下来的新内容。你需要删掉标记,留下最终想要的版本,比如:
theme = "auto"
然后再保存文件,执行:
git add config.json
git commit -m "Resolved theme conflict"
冲突就算处理完了。
平时怎么减少冲突?
分工明确很重要。比如你负责写后端逻辑,孩子负责做前端页面,各自改不同的文件,自然不容易撞车。但如果非得改同一个文件,可以约定好顺序:一个人改完提交推送到远程,另一个再拉下来继续。
还可以用分支(branch)来隔离改动。比如孩子要尝试新功能,可以创建自己的分支:
git checkout -b feature/login-page
等他做完测试没问题,你再合并进主分支。这样主代码一直稳定,也不会因为你俩同时动手而乱套。
家里的小项目虽然不像公司那样复杂,但用好Git冲突检测机制,能让合作更顺畅。别等到代码乱成一团才去翻教程,提前了解这些细节,省心又省事。