如何避免代码冲突,拉取分支

🔥 给你一个真正"绝对不粘锅"的保命方案

为了让你绝对放心,我们在执行 Git 命令前,先加一个物理备份步骤。这样无论 Git 怎么炸,你都能一键还原。

请严格按照下面这个**"绝对防御"流程**操作:

🛠️ 第一步:物理备份

在执行任何 git 命令前,先把你的代码文件夹复制 一份放在旁边。 哪怕天塌下来,你只要把备份文件夹改个名放回去,就当无事发生。 要拉取哪个就备份哪个

复制代码
# 1. 回到 src 目录的上级
cd ~/autoware_ws/wordk_space/lubo_auto_car/src

# 2. 把你的代码包 luobopnc 完整复制一份,命名为 luobopnc_backup
# (cp -r 是递归复制的意思)
cp -r luobopnc luobopnc_backup

✅ 此时: 无敌。就算把代码库删了都不怕。


🛠️ 第二步:执行更严谨的 Stash(带上 -u 参数)

现在的 stash 命令要升级一下,加上 -u 参数,把你那些没追踪的新文件也一起藏起来。

复制代码
cd ~/autoware_ws/wordk_space/lubo_auto_car/src/luobopnc

# 暂存所有修改(包括新建的文件)
git stash -u

#查看所有修改
git stash show -p

✅ 此时状态: 你的工作区应该变得完全干净,和刚从服务器拉下来时一样。


🛠️ 第三步:确认身份 (新增的关键一步!) 👈

确保自己站在正确的位置上。

复制代码
git checkout develop
  • 如果原本就在 develop: Git 会说 Already on 'develop'(无事发生,很安全)。

  • 如果原本在 master: Git 会帮你切过去(Switched to branch 'develop')。


🛠️ 第三步:拉取导师代码
复制代码
git pull origin develop
git submodule update --init --recursive

✅ 此时状态: 你的本地代码已经是导师的最新版本了。


🛠️ 第四步:恢复你的修改(关键时刻)
复制代码
git stash pop

🚨这时候可能会出现两种结果,请对号入座:

  • 结果 A(大吉): 终端显示 Dropped refs/stash...。

    • 说明: 没有任何冲突,你的修改完美融合进去了。

    • 操作: 直接去编译(colcon build),任务结束。

  • 结果 B(遇到麻烦): 终端显示 CONFLICT (content)...,并且没有显示 Dropped...。

    • 说明: 撞车了! 导师改的地方和你改的地方冲突了。

    • 怎么救:

      1. 不要慌。

      2. 打开 VS Code,找到变红的文件。

      3. 你会看到 <<<< HEAD 这种标记。

      4. 如果这让你感到头大,或者怕修坏了:

        • 直接删掉这个 luobopnc 文件夹。

        • 把刚才第一步备份的 luobopnc_backup 改名为 luobopnc 放回来。

        • 然后告诉导师:"我本地改动比较多,拉取有冲突,我先把我的代码备份了,您看怎么处理比较好?"(这是非常诚实且专业的处理方式)。


4. 防止导师加了新库 (保险起见)

复制代码
git submodule update --init --recursive

第二阶段:重新编译 (在 Docker 容器内执行)

拉下来的是 C++ 代码(文本),机器是不认识的。你必须让编译器把它们变成可执行文件。

切换到你的 root docker终端

1. 回到工作空间根目录

复制代码
cd ~/work_space/lubo_auto_car

2. 再次检查依赖 (以防导师引入了新包)

复制代码
rosdep install --from-paths src --ignore-src -r -y

3. 编译

复制代码
# 如果不知道导师改了哪个包,就全编(比较慢)
colcon build

# 如果知道他只改了 planning,就只编 planning(快)
# colcon build --packages-select planning_node

4. 刷新环境

复制代码
source install/setup.bash

🚨 紧急情况预案:如果 git pull 报错怎么办?

如果你执行 git pull 时提示:

error: Your local changes to the following files would be overwritten by merge:

这说明你修改了文件,导师也修改了同一个文件,Git 不敢覆盖。

解决办法(如果你想保留你的修改):

复制代码
git stash        # 先把你的修改"藏"起来
git pull origin develop  # 拉取导师代码
git stash pop    # 把你的修改"放"回来(可能会提示冲突,需要手动修)

解决办法(如果你不在乎你的修改,只想用导师的):

git reset --hard origin/develop # 强行覆盖,慎用!

相关推荐
johnsong1 小时前
AI前沿日报 · 2026-10-31 | 安全失守——当AI工具被下毒、当云端门户洞开
人工智能·安全
David猪大卫1 小时前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
得帆低代码PaaS2 小时前
企业级 Agent 架构:MCP、Integration、数据与治理能力
大数据·人工智能·架构·ai agent·企业数字化·mcp
叼烟扛炮2 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
Ruiery3 小时前
Linux 6.6内核内存管理深度解析(十五):CMA 连续内存分配器
linux·运维·服务器
一条大祥脚3 小时前
TVM 的前世今生:从深度学习编译器到 AI 基础设施
人工智能·深度学习·tvm
测试界的小码农3 小时前
【Linux 命令实战(01):认识 Linux 终端,从零掌握第一个命令】
linux·运维·服务器
冬奇Lab4 小时前
一天一个开源项目(第255篇):Mika —— 装在安卓手机里的 AI 代理,在后台虚拟屏上替你操作 App 和网页
人工智能·开源·资讯
布裘4 小时前
【银河麒麟】重启后时区丢失?排查发现 localtime 被业务程序替换成硬链接
linux·运维·网络
孟健6 小时前
实测 agent-desktop:AI 控制桌面不截图、不占鼠标键盘,连点 55 次计算器 0 失误
人工智能·架构·开源