由于我之前已经按照autoware.universe官方的安装教程直接克隆了整个main分支,所以为了创建我自己的小车系统,我需要按照上边说的在我的github上创建一个分支(autoware.tinyPLC_vehicle)作为我自己小车的分支,记录如下:

此方案适合真正要接入实车、长期维护团队项目:

  1. Fork 官方 autoware 仓库,命名成 autoware.<你的车名>(例如 autoware.tinycar)。

  2. 在你 fork 的仓库里,把 autoware.repos 里与车辆相关的仓库(sample_sensor_kit_launchsample_vehicle_launchautoware_individual_paramsautoware_launch)替换为你自己 fork 后的对应仓库地址。

  3. vcs import 拉取你在 .repos 里声明的所有子仓库,然后编译。
    (官方“Creating Autoware repositories”文档就是教你这样做的,并给了具体更改示例。)autowarefoundation.github.io

 在现有 autoware/ 上“原地”建自己的分支,你当前是直接 git clone autowarefoundation/autoware 的情况;main 能跑,但长期集成建议做成自己的元仓库固定依赖autowarefoundation.github.io

 1. 进入仓库并确认状态

cd ~/autoware
git status

git status命令可以查看你目前处于哪个分支,代码的提交和推送情况如下图:

2. 在 GitHub 上创建你的仓库(例如:autoware.tinyPLC_vehicle)。

3. 把当前远端改名为 upstream,再添加你自己的 fork 当作 origin
(先去 GitHub fork 一份到你账户,比如 github.com/<YOU>/autoware.<YOUR-VEHICLE>,这是你的“元仓库”。)

git remote rename origin upstream
git remote add origin git@github.com:<YOU>/autoware.<YOUR-VEHICLE>.git
git remote -v

  4.  把分支推上去(两种选一种或都推)

# 可选:把 main 也推到你自己的仓库
git push -u origin main

# 推荐:把我们为 tinyPLC 建的长期分支推上去(如果还没建,就先建)
git checkout -b vehicle/tinyPLC_vehicle-base   # 若已存在可省略这一行
git push -u origin vehicle/tinyPLC_vehicle-base

        有没有提交(commit)不重要——即使没有新提交,只要 push 了,GitHub 上就会出现这个分支。未 push → 浏览器上永远看不到你的分支;只 commit 不 push 也看不到。

        我在提交时报错,此处做个记录,报错内容如下:

xiaoan@xiaoan-pc:~/autoware$ git push -u origin main ssh: connect to host github.com port 22: Connection timed out fatal: 无法读取远程仓库。请确认您有正确的访问权限并且仓库存在。

 这是典型的 SSH 22 端口被网络/防火墙拦截 导致的超时。解决有两条最快路:

  • 立刻用 HTTPS 推(最省事,马上能成功);

  • 或者继续用 SSH 但改走 443 端口(避开被封的 22)。

方案一:改用 HTTPS 推

(1)把 origin 切到 HTTPS:

# 把 <YOU> 换成你的 GitHub 用户名或组织名
git remote set-url origin https://github.com/<YOU>/autoware.tinyPLC_vehicle.git
git remote -v   # 确认已是 https 地址

(2)推送:

git push -u origin main

(3)认证方式(很重要)

        GitHub 的 HTTPS 不接受账号密码,需要 Personal Access Token (PAT)

  • 在 GitHub:头像 → SettingsDeveloper settingsPersonal access tokensTokens (classic)Generate new token

  • repo 权限,生成后复制。

  • 终端提示输入 Username 就填你的 GitHub 用户名;Password 就粘贴这个 token
    (可让 Git 记住凭据:git config --global credential.helper store

注意:生成PAT时,Permissions这里要注意修改此项:

添加Content,并将Read only改为Read and write。

否则回报如下错误:

xiaoan@xiaoan-pc:~/autoware$ git push -u origin main Username for 'https://github.com': xiaoan537 Password for 'https://xiaoan537@github.com': remote: Repository not found. fatal: 仓库 'https://github.com/xiaoan537/autoware.tinyPLC_vehicle.git/' 未找到

方案二:保留 SSH,但让 SSH 走 443 端口

(1)新建/编辑 ~/.ssh/config(没有就创建):

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/config

写入以下内容(保持 Host 名叫 github.com,这样远端地址不用改):

Host github.com
  HostName ssh.github.com
  Port 443
  User git
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes
  ServerAliveInterval 60
  ServerAliveCountMax 3

如果你的私钥不是 ~/.ssh/id_ed25519,把路径改成你的实际私钥。

(2)(可选)确保 agent 载入了私钥:

ssh-add ~/.ssh/id_ed25519  # 若提示 agent 不在,先 eval "$(ssh-agent -s)"

(3)测试 SSH 是否通:

ssh -T git@github.com
# 正常会回 "Hi <你的用户名>! You've successfully authenticated..."

(4)再推送:

git push -u origin main

我选的方案二,方案二总结:

# 1) 创建/覆盖正确的 SSH 配置文件(注意是 ~/.ssh/config 不是 ~/.ssh.config)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat > ~/.ssh/config <<'EOF'
Host github.com
  HostName ssh.github.com
  Port 443
  User git
  IdentityFile ~/.ssh/id_rsa      # 你现在用的是 id_rsa,就保留这行
  IdentitiesOnly yes
  ServerAliveInterval 60
  ServerAliveCountMax 3
EOF
chmod 600 ~/.ssh/config

# 2) 确保私钥权限正确
chmod 600 ~/.ssh/id_rsa

# 3) (可选)启动 ssh-agent 并加入私钥
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

# 4) 测试直连 443(带调试信息,能看出卡在哪)
ssh -vvT -p 443 git@ssh.github.com

把远端切回 SSH 并推送

# 切到 SSH 地址(注意冒号语法)
git remote set-url origin git@github.com:xiaoan537/autoware.tinyPLC_vehicle.git
git remote -v   # 确认 origin 已是 SSH

# 推送到你的仓库
git push -u origin main

必查两点(很关键)

1. 公钥是否加到 GitHub:
浏览器 → GitHub → 头像 → Settings → SSH and GPG keys → 看有没有你这把 id_rsa.pub。没有就粘贴新增:

cat ~/.ssh/id_rsa.pub    # 复制整行粘到 GitHub

2. 远端仓库是否真的存在且在你账号下:
https://github.com/xiaoan537/autoware.tinyPLC_vehicle 打开能看到仓库(你是 Owner)。

如果报下边的错误:

xiaoan@xiaoan-pc:~/autoware$ git push -u origin main
To github.com:xiaoan537/autoware.tinyPLC_vehicle.git
 ! [rejected]        main -> main (fetch first)
error: 无法推送一些引用到 'github.com:xiaoan537/autoware.tinyPLC_vehicle.git'
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 'git pull ...')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。

        这是因为你的 远端仓库不是空的(大概率是你在 GitHub 创建仓库时勾了 Add a README),所以本地 main 不能直接快进到远端。解决有两条路——看你是否要保留远端那一个初始化提交(README)。

        按下面做(在 ~/autoware)(强制覆盖远端 main。这会把你远端仓库里“初始化 README 的那次提交”覆盖掉,只保留你本地 main 的历史。):

# 1) 先取一次远端,避免误覆盖别人新推的东西
git fetch origin

# 2) 确认当前就在 main 分支
git branch --show-current

# 3) 强制推送(更安全的强推:--force-with-lease)
git push --set-upstream origin main --force-with-lease

成功后,你会看到类似:

+ abcdef1...1234567 main -> main (forced update)

接着把你的长期分支也推上去(如果你建了 vehicle/tinyPLC_vehicle-base):

git push -u origin vehicle/tinyPLC_vehicle-base

最后自检一下:

git remote -v                          # origin 应该是 SSH 地址
git log --oneline -n 3                 # 看本地 main 最近提交
git log --oneline origin/main -n 3     # 看远端 main 已一致

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐