warning: push.default is unset; its implicit value is changing in

注意:要提交本地数据到远程仓库,则必须确认远程仓库当前所指示的分支并不是本地分支直接对应的远程仓库(即直接git clone过来的),因为如果远程仓库所指示的分支可能处于编译的状态,所以不能指示当前分支,以防止冲突。



Git 2.0 更改 push default 为‘simple’

oschina  oschina  发布于2013年11月03日  收藏 44  评论 11

在腾讯云上创建您的SQL Cluster>>>»  

Git

如果你最近更新了 Git,你可能会在执行 git push 时看到如下消息:

warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use: 

  git config --global push.default simple

Matching

‘matching’ 参数是 Git 1.x 的默认行为,其意是如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。

Simple

而 Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。

修改默认设置

从上述消息提示中的解释,我们可以修改全局配置,使之不会每次 push 的时候都进行提示。对于 matching 输入如下命令即可:

git config --global push.default matching

而对于 simple ,请输入:

git config --global push.default simple

via nicoschuele

root@ubuntu:~/dev_ws# colcon build [19.739s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/root/dev_ws/install/tf2_tools' in the environment variable AMENT_PREFIX_PATH doesn't exist [19.740s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/root/dev_ws/install/origincar_base' in the environment variable AMENT_PREFIX_PATH doesn't exist [19.740s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/root/dev_ws/install/serial' in the environment variable AMENT_PREFIX_PATH doesn't exist [19.741s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/root/dev_ws/install/origincar_msg' in the environment variable AMENT_PREFIX_PATH doesn't exist [19.741s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/root/dev_ws/install/origincar_description' in the environment variable AMENT_PREFIX_PATH doesn't exist [19.742s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/root/dev_ws/install/origincar_bringup' in the environment variable AMENT_PREFIX_PATH doesn't exist [19.742s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/root/dev_ws/install/ackermann_msgs' in the environment variable AMENT_PREFIX_PATH doesn't exist [19.743s] WARNING:colcon.colcon_ros.prefix_path.catkin:The path '/root/dev_ws/install/origincar_base' in the environment variable CMAKE_PREFIX_PATH doesn't exist [19.743s] WARNING:colcon.colcon_ros.prefix_path.catkin:The path '/root/dev_ws/install/serial' in the environment variable CMAKE_PREFIX_PATH doesn't exist [19.744s] WARNING:colcon.colcon_ros.prefix_path.catkin:The path '/root/dev_ws/install/origincar_msg' in the environment variable CMAKE_PREFIX_PATH doesn't exist [19.744s] WARNING:colcon.colcon_ros.prefix_path.catkin:The path '/root/dev_ws/install/origincar_description' in the environment variable CMAKE_PREFIX_PATH doesn't exist [19.745s] WARNING:colcon.colcon_ros.prefix_path.catkin:The path '/root/dev_ws/install/origincar_bringup' in the environment variable CMAKE_PREFIX_PATH doesn't exist [19.746s] WARNING:colcon.colcon
最新发布
07-23
<think>首先,用户的问题是关于在ROS中使用colcon build时遇到的警告:AMENT_PREFIX_PATH和CMAKE_PREFIX_PATH路径不存在的解决。用户提到了几个引用,这些引用提供了相关背景信息。 关键点: - 引用[1]:警告路径不存在。 - 引用[2]:AMENT_PREFIX_PATH用于存储工作空间前缀,而不是CMAKE_PREFIX_PATH,以避免干扰。 - 引用[3]:编译报错ament_cmake,需要添加安装路径到CMAKE_PREFIX_PATH。 - 引用[4]:详细解释了ament_export_targets和install命令的使用。 - 引用[5]:找不到ament_cmake包的配置文件。 用户的问题焦点是解决警告:WARNING:colcon.colcon_ros.prefix_path.ament:The path '/xx/xx' in the environment variable CMAKE_PREFIX_PATH doesn't exist。 根据引用[2],AMENT_PREFIX_PATH是ROS2中用于存储工作空间前缀的环境变量,而CMAKE_PREFIX_PATH是CMake特定的变量,可能会干扰其他值。警告表明在CMAKE_PREFIX_PATH中指定的路径不存在。 解决方案: 1. **检查环境变量**:确保环境变量CMAKE_PREFIX_PATH和AMENT_PREFIX_PATH设置正确。路径应该指向实际存在的目录。 2. **更新路径**:如果路径无效,移除或更新这些变量。例如,在终端中运行: ```bash unset CMAKE_PREFIX_PATH unset AMENT_PREFIX_PATH ``` 或者设置正确的路径: ```bash export CMAKE_PREFIX_PATH=/correct/path export AMENT_PREFIX_PATH=/correct/path ``` 3. **使用ROS2初始化**:在构建ROS2工作空间前,确保source了ROS2安装脚本,如: ```bash source /opt/ros/foxy/setup.bash # 根据ROS2版本调整 ``` 这会自动设置必要的环境变量。 4. **清理和重建**:有时,清理工作空间并重新构建可以解决问题: ```bash rm -rf build install log colcon build ``` 5. **检查工作空间设置**:确保工作空间配置正确。引用[3]和[5]提到,如果缺少ament_cmake,需要安装依赖或检查路径。 结构化回答: - **解释问题**:简要说明警告原因。 - **提供解决方案**:逐步指导如何解决。 - **添加相关问题**:根据系统指令,生成相关问题。 最后,添加引用标识:[^1], [^2], [^3], [^4], [^5]在适当位置。 生成相关问题: 1. 如何正确设置ROS2工作空间的环境变量? 2. AMENT_PREFIX_PATH和CMAKE_PREFIX_PATH有什么区别? 3. 如何安装ament_cmake包?</think>### 解决 colcon build 警告:AMENT_PREFIX_PATH 和 CMAKE_PREFIX_PATH 路径不存在 在 ROS2(如 Foxy 或 Humble)中使用 `colcon build` 构建工作空间时,出现类似警告: `WARNING:colcon.colcon_ros.prefix_path.ament:The path '/xx/xx' in the environment variable CMAKE_PREFIX_PATH doesn't exist` 通常是由于环境变量 `CMAKE_PREFIX_PATH` 或 `AMENT_PREFIX_PATH` 中包含了无效或已删除的路径。ROS2 依赖这些变量定位依赖包,但路径不存在会导致警告。以下是逐步解决方案: --- ### 原因分析 - **环境变量冲突**:`CMAKE_PREFIX_PATH` 是 CMake 的构建变量,而 `AMENT_PREFIX_PATH` 是 ROS2 特有的运行时变量。两者路径不一致或指向无效目录时,会触发警告[^2]。 - **路径失效**:工作空间被移动、删除,或 ROS2 安装后未正确初始化环境。 - **依赖缺失**:如果缺少关键包(如 `ament_cmake`),会进一步引发错误(如引用[3][^3]和[5][^5])。 --- ### 解决方法 #### 步骤 1: 检查并更新环境变量 在终端中运行以下命令,检查当前路径设置: ```bash echo $CMAKE_PREFIX_PATH echo $AMENT_PREFIX_PATH ``` - **如果路径无效**:移除或更新无效路径: ```bash # 移除无效路径(临时生效) unset CMAKE_PREFIX_PATH unset AMENT_PREFIX_PATH # 重新设置正确路径(例如 ROS2 Foxy 的安装路径) source /opt/ros/foxy/setup.bash # 根据实际版本调整 ``` - **如果路径有效但缺失**:确保路径存在: ```bash mkdir -p /your/custom/path # 创建缺失目录 export CMAKE_PREFIX_PATH="/your/custom/path:$CMAKE_PREFIX_PATH" ``` #### 步骤 2: 确保 ROS2 环境初始化 在构建前,必须 source ROS2 的 `setup.bash`: ```bash source /opt/ros/<your_ros_version>/setup.bash # 例如 source /opt/ros/foxy/setup.bash cd ~/your_workspace # 进入工作空间 colcon build ``` 这能自动设置 `AMENT_PREFIX_PATH` 和 `CMAKE_PREFIX_PATH`,避免手动配置错误[^2][^5]。 #### 步骤 3: 清理工作空间并重建 残留文件可能引发冲突: ```bash rm -rf build install log # 删除旧构建文件 colcon build --symlink-install # 重新构建(--symlink-install 可节省空间) ``` #### 步骤 4: 安装缺失依赖 如果警告伴随 `ament_cmake` 错误(如引用[3][^3]): ```bash # 安装 ament_cmake 和其他核心包 sudo apt update sudo apt install ros-<your_ros_version>-ament-cmake ros-<your_ros_version>-ros-core ``` #### 步骤 5: 验证路径导出(高级) 在包的 `CMakeLists.txt` 中,确保正确导出目标: ```cmake # 示例:导出依赖和目标 find_package(ament_cmake REQUIRED) ament_export_dependencies(...) # 导出依赖 ament_export_targets(...) # 导出目标 ``` 这能确保下游包正确识别路径(参考引用[4][^4])。 --- ### 注意事项 - **优先级问题**:`AMENT_PREFIX_PATH` 优先于 `CMAKE_PREFIX_PATH`。ROS2 推荐使用 `AMENT_PREFIX_PATH` 避免冲突[^2]。 - **永久设置**:如需永久修改环境变量,将 `export` 命令添加到 `~/.bashrc` 文件。 - **调试工具**:使用 `colcon build --event-handlers console_direct+` 查看详细构建日志。 通过以上步骤,警告通常能解决。如果问题持续,检查工作空间结构是否合规(如 `src` 目录存放包)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值