Gitlab 倉(cāng)庫(kù)創(chuàng)建以及代碼文件上傳

前期準(zhǔn)備工作:

本實(shí)例用Android源碼為例:

校驗(yàn)文件完整性

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

將多個(gè)文件重定向到新的壓縮文件中(文件名自取)

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

解壓文件 或解壓到指定文件夾

tar -xvf rk3568_android.tar

檢出項(xiàng)目

repo sync -l

建議上傳 Android 系統(tǒng)源碼前先編譯源碼,由于部分平臺(tái)源碼中含有下載更新提取等操作。
貿(mào)然刪除所有 Git 或者 repo 會(huì)導(dǎo)致這部分操作異常編譯失敗,尤其是使用 repo 管理的系統(tǒng)源碼。
先編譯將此類文件操作完成之后再上傳,并修復(fù)這類可能存在的操作。

源碼中采用repo來(lái)管理,本實(shí)例采用單git管理。

一、創(chuàng)建 gitlab 倉(cāng)庫(kù) (創(chuàng)建后會(huì)有如下提示,如果是比較小的項(xiàng)目可以直接使用)

Git 全局設(shè)置

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

創(chuàng)建一個(gè)新倉(cāng)庫(kù)

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

推送現(xiàn)有文件夾

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

推送現(xiàn)有的 Git 倉(cāng)庫(kù)

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倉(cāng)庫(kù)

進(jìn)入源碼根目錄

cd /path/to/rk3568_android13

初始化Git倉(cāng)庫(kù)

git init

配置用戶信息(已配置,可跳過(guò))

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

1.1 檢查是否已有Git倉(cāng)庫(kù)

ls -la | grep .git

檢查是否有其他.git目錄

find . -name ".git" -type d

1.2 刪除原有的git記錄

刪除.repo目錄(Repo工具管理目錄)

rm -rf .repo/

刪除所有子項(xiàng)目中的.git目錄(重要?。?/p>

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

三、根目錄下(如果沒(méi)有)創(chuàng)建.gitignore文件

創(chuàng)建適當(dāng)?shù)?code>.gitignore文件來(lái)忽略不必要的文件:(系統(tǒng)原有的忽律文件可能不完整,需要根據(jù)實(shí)際需要額外添加。)

.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

四、添加遠(yuǎn)程倉(cāng)庫(kù)地址

添加GitLab遠(yuǎn)程倉(cāng)庫(kù)

git remote add origin git@192.168.30.233:xxxx.git

驗(yàn)證遠(yuǎn)程倉(cāng)庫(kù)

git remote -v

五、如果遇到大文件推送問(wèn)題

由于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

六、準(zhǔn)備首次提交

添加所有文件到暫存區(qū)

git add .

檢查將要提交的文件

git status

進(jìn)行首次提交

git commit -m "初始提交: RK3568 Android 13.0系統(tǒng)源碼
- 基于RK3568平臺(tái)的Android 13.0源碼
- 包含完整的系統(tǒng)構(gòu)建環(huán)境
- 版本: android-13.0-mid-rkr6.1
- 提交時(shí)間: $(date)"

七、分階段添加和提交(推薦)

由于Android源碼很大,建議分階段提交:

先添加小文件和非二進(jìn)制文件

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

提交第一次

git commit -m "初始提交: Android 13.0基礎(chǔ)框架"

再添加其他目錄

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

或者使用更細(xì)的提交策略

git add bionic/ bootable/ development/
git commit -m "添加系統(tǒng)組件"

git add external/ packages/ vendor/
git commit -m "添加外部包和供應(yīng)商代碼"

八推送到遠(yuǎn)程倉(cāng)庫(kù)

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

如果推送中斷或失敗,可以使用以下恢復(fù)策略:

方法1:繼續(xù)推送(如果支持)

git push --progress

方法2:淺層推送(如果完整推送失?。?/p>

git push --depth 100 origin main  # 先推送最近100個(gè)提交

方法3:分批推送

git push origin main:temp-branch  # 推送到臨時(shí)分支

可使用一下命令查看 git 狀態(tài):

ps aux | grep git

九、誤提交的修補(bǔ)

如果文件已誤提交:若 .classpath文件已經(jīng)被意外提交到了 GitLab 倉(cāng)庫(kù),
可以執(zhí)行以下命令將其從版本控制中移除,但保留在本地,然后將 .classpath加入 .gitignore,再提交這次更改。

git rm --cached **/.classpath

移除所有 .settings 目錄

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

移除所有 .prefs 文件

git rm --cached **/*eclipse*.prefs
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容