已经从autoware官方git colong后,当前是直接 git clone autowarefoundation/autoware 的情况,在现有 autoware/ 上“原地”建自己的分支
官方autoware仓库,命名成(例如在你 fork 的仓库里,把里与车辆相关的仓库()替换为你自己 fork 后的对应仓库地址。用vcs import拉取你在.repos里声明的所有子仓库,然后编译。(官方“Creating Autoware repositories”文档就是教你这样做的,并给了具体更改示例。在现有autoware/上“原地”建自己的分支,你当前是直接的情况;main能跑,但长
由于我之前已经按照autoware.universe官方的安装教程直接克隆了整个main分支,所以为了创建我自己的小车系统,我需要按照上边说的在我的github上创建一个分支(autoware.tinyPLC_vehicle)作为我自己小车的分支,记录如下:
此方案适合真正要接入实车、长期维护团队项目:
-
Fork 官方
autoware
仓库,命名成autoware.<你的车名>
(例如autoware.tinycar
)。 -
在你 fork 的仓库里,把
autoware.repos
里与车辆相关的仓库(sample_sensor_kit_launch
、sample_vehicle_launch
、autoware_individual_params
、autoware_launch
)替换为你自己 fork 后的对应仓库地址。 -
用
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:头像 → Settings → Developer settings → Personal access tokens → Tokens (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 已一致
更多推荐
所有评论(0)