Gitlab 仓库创建以及代码文件上传

前期准备工作:

本实例用Android源码为例:

校验文件完整性

md5sum android-11.0-mid-rkr12.10.tar_a*

将多个文件重定向到新的压缩文件中(文件名自取)

cat android-11.0-mid-rkr12.10.tar_a* > rk3568_android.tar

解压文件 或解压到指定文件夹

tar -xvf rk3568_android.tar

检出项目

repo sync -l

建议上传 Android 系统源码前先编译源码,由于部分平台源码中含有下载更新提取等操作。
贸然删除所有 Git 或者 repo 会导致这部分操作异常编译失败,尤其是使用 repo 管理的系统源码。
先编译将此类文件操作完成之后再上传,并修复这类可能存在的操作。

源码中采用repo来管理,本实例采用单git管理。

一、创建 gitlab 仓库 (创建后会有如下提示,如果是比较小的项目可以直接使用)

Git 全局设置

git config --global user.name "name"
git config --global user.email "email"

创建一个新仓库

git clone git@192.168.30.233:xxxx.git
cd rk3568_android13
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

推送现有文件夹

cd existing_folder
git init
git remote add origin git@192.168.30.233:xxxx.git
git add .
git commit -m "Initial commit"
git push -u origin master

推送现有的 Git 仓库

cd existing_repo
git remote rename origin old-origin
git remote add origin git@192.168.30.233:xxxx.git
git push -u origin --all
git push -u origin --tags

二、初始化本地Git仓库

进入源码根目录

cd /path/to/rk3568_android13

初始化Git仓库

git init

配置用户信息(已配置,可跳过)

git config user.email "email"
git config user.name "name"

1.1 检查是否已有Git仓库

ls -la | grep .git

检查是否有其他.git目录

find . -name ".git" -type d

1.2 删除原有的git记录

删除.repo目录(Repo工具管理目录)

rm -rf .repo/

删除所有子项目中的.git目录(重要!)

find . -name ".git" -type d ! -path "./.git" -exec rm -rf {} + 2>/dev/null

三、根目录下(如果没有)创建.gitignore文件

创建适当的.gitignore文件来忽略不必要的文件:(系统原有的忽律文件可能不完整,需要根据实际需要额外添加。)

.repo/

rockdev/
out/
.vscode
.local/
.idea/
.vscode/
*.iml

*/.project
.project
**/.settings/
*.prefs
*/.classpath
.classpath

# 以下仅供参考
!prebuilts/jdk/**/legal/java.prefs
!/external/rust/crates/bindgen/**/out/
!/external/rust/crates/clang-sys/**/out/
!/external/rust/crates/protobuf/**/out/
!/RKTools/linux/Linux_Pack_Firmware/rockdev/

cache.properties
gc.properties
executionHistory.lock
checkSums.lock
checksums.lock
fileHashes.lock
buildOutputCleanup.lock
last-build.bin
.gradle

四、添加远程仓库地址

添加GitLab远程仓库

git remote add origin git@192.168.30.233:xxxx.git

验证远程仓库

git remote -v

五、如果遇到大文件推送问题

由于Android源码较大,可能需要特殊处理:

# 配置Git大文件处理 
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
git config --global http.postBuffer 2097152000
git config --global http.maxRequestBuffer 2097152000

如果推送失败,尝试分块推送

git push --progress origin master

或者使用浅层推送(如果历史记录不重要)

git push --depth 1 origin master

六、准备首次提交

添加所有文件到暂存区

git add .

检查将要提交的文件

git status

进行首次提交

git commit -m "初始提交: RK3568 Android 13.0系统源码
- 基于RK3568平台的Android 13.0源码
- 包含完整的系统构建环境
- 版本: android-13.0-mid-rkr6.1
- 提交时间: $(date)"

七、分阶段添加和提交(推荐)

由于Android源码很大,建议分阶段提交:

先添加小文件和非二进制文件

git add *.mk *.bp Android.mk Android.bp Makefile *.sh
git add build/ device/ hardware/ system/ frameworks/

提交第一次

git commit -m "初始提交: Android 13.0基础框架"

再添加其他目录

git add .
git commit -m "添加完整源码"

或者使用更细的提交策略

git add bionic/ bootable/ development/
git commit -m "添加系统组件"

git add external/ packages/ vendor/
git commit -m "添加外部包和供应商代码"

八推送到远程仓库

git remote add origin git@192.168.30.233:xxxx.git
git branch -M main
git push -u origin main

如果推送中断或失败,可以使用以下恢复策略:

方法1:继续推送(如果支持)

git push --progress

方法2:浅层推送(如果完整推送失败)

git push --depth 100 origin main  # 先推送最近100个提交

方法3:分批推送

git push origin main:temp-branch  # 推送到临时分支

可使用一下命令查看 git 状态:

ps aux | grep git

九、误提交的修补

如果文件已误提交:若 .classpath文件已经被意外提交到了 GitLab 仓库,
可以执行以下命令将其从版本控制中移除,但保留在本地,然后将 .classpath加入 .gitignore,再提交这次更改。

git rm --cached **/.classpath

移除所有 .settings 目录

git rm -r --cached **/.settings/

移除所有 .prefs 文件

git rm --cached **/*eclipse*.prefs
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容