type
status
date
slug
summary
tags
category
icon
password
1. 仓库迁移
背景:现在有一个仓库,托管在gitlab上,本人没有gitlab仓库的访问修改等权限,现在拿到了该仓库clone在本地的仓库,想把他托管在github等其他平台上,需要如何操作
- 在 GitHub 上创建一个新的空仓库,用于存放你的项目。这个仓库将成为你的目标仓库。
- 在你的本地 GitLab 仓库中添加一个指向 GitHub 仓库的远程地址。使用以下命令将 GitHub 仓库作为远程地址添加到你的 GitLab 仓库中:
替换
你的用户名
和 你的目标仓库名
为你在 GitHub 上的用户名和目标仓库名。- 将你的 GitLab 仓库推送到 GitHub。使用以下命令将你的 GitLab 仓库的所有分支和提交记录推送到 GitHub:
这将保留你的提交历史。请注意,这样做会丢失访问控制(例如在 GitLab 中定义的团队和仓库的特定访问权限)。
- 此时在github可能只显示master或main分支,要解决这个问题,你需要将这些远程追踪分支转换成对应的本地分支,并且再次推送它们。下面是你可以遵循的一系列步骤:
- 列出当前所有的远程追踪分支:
- 为每一个远程追踪分支创建一个本地分支,并将其推送到GitHub。一个快捷的方式是使用以下命令(在shell中)创建并推送所有的分支到GitHub:
- 进入github查看分支情况
- 如果你在使用 GitHub 仓库的 HTTPS URL 时遇到问题,可能会出现类似以下错误:
这时你需要输入你的 GitHub 密码。如果你想使用 SSH 方式推送,你可以阅读更多关于如何设置的信息 这里。
2. 子仓库添加和删除
添加(我现在有一个仓库A,现在我想把仓库B作为子仓库放在仓库A的src目录下)
1. 克隆你的ROS工作空间仓库
如果还没有克隆你的ROS工作空间仓库到本地,请先进行克隆操作:
2. 添加子模块
将功能包b作为子模块添加到
src
目录下:3. 初始化和更新子模块
在克隆或者下载了你的ROS工作空间后,需要初始化和更新子模块:
4. 提交子模块更改
添加和提交子模块更改:
5. 在子模块内进行更改
如果需要在子模块内进行更改,先进入到子模块目录:
然后可以正常进行Git操作,如commit、push等:
6. 更新子模块
如果功能包b(子模块)的仓库有更新,你需要在你的ROS工作空间中更新它:
按照以上步骤进行操作,你的ROS工作空间就能够成功管理功能包b,并将其作为子模块托管在GitHub上。
删除(对于添加的子仓库B,发现手动下载至指定目录也可以,想反悔上述添加动作)
1. 删除子模块目录
2. 修改
.gitmodules
文件手动编辑
.gitmodules
文件,删除与子模块相关的条目。例如:打开
.gitmodules
文件,你会看到类似于以下内容:删除这一节内容,然后保存并退出。
3. 修改
config
文件如果你也有
.git/config
文件中包含子模块的配置,手动删除相关条目。类似:[submodule "src/repo_b"]
url = https://github.com/username/repo_b.git
- Author:Lianzhao
- URL:https://lianzhao.vercel.app//article/git_record
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!