Repo是Google用Python腳本寫的調用git的一個腳本,主要是用來下載、管理Android項目的軟件倉庫。
一、首次配置環境及初始化repo:
1、先配置環境:
mkdir bin //在根目錄創建bin目錄 cp repo bin/ //前提是存在repo這個文件. 將repo復制到bin目錄下 export PATH=$PATH:~/bin //加入環境變量 mkdir work_repo //在根目錄創建一個work_repo目錄,用於存放項目
2、初始化倉庫:
cd work_repo //切換到work_repo目錄 repo init -u ssh://XXX -b XXX -m XXX.xml //根據具體項目地址進行初始化
在初始化的過程中,可能出現網址無法訪問的情況,則可以進行如下修改:
仍然在work_repo目錄下, rm .* rm .repo/ -rf cd .. //切回根目錄 vim bin/repo //在repo文件中將訪問地址改為最新的https://gitee.com/FlymeGit/repo 修改后,切換目錄至work_repo,然后執行上述初始化命令即可。
3、同步代碼
repo sync -c --no-tags //首次一般使用該命令同步所有代碼(Android整個源碼)
若只更新某個模塊,則可使用命令:
repo sync -c -d XXX //XXX模塊名
二、常見問題:
1、repo sync時可能出現問題,對於已有項目已經編譯過,會有很多新生成或修改的文件。如果需要清除這些多的文件以及將所有修改的文件恢復回去,可以運行下述兩個命令:
repo forall -c "git reset --hard HEAD" repo forall -c "git clean -df"
但是android下面的out目錄需要手動清除:rm -rf out.
在這個基礎上,再repo sync一般就不會有問題了。
2、提交代碼時,出現權限不足,可能原因:
檢查repo配置信息,用戶名+郵箱+key等是否存在錯誤,查看config文件(因有些在命令下顯示的是正確的,但是文件中配置的是錯誤的,可能存在非法字符等)。
3、在本地創建臨時分支進行代碼的修改,由於其他原因,直接切回了主分支,出現下述問題:
臨時分支上的修改也作用於了主分支
產生原因:切換到主分支前,沒有在臨時分支上提交修改。
此時可使用如下操作:(這樣可使得提交歷史更清晰整潔)
(1)若本地有修改,則先執行 git stash //保存本地修改 (2)git pull --rebase //更新到修改前 (3)git stash apply //恢復本地修改記錄 (4)然后進行正常的git add 、 git commit 提交等操作。即可,驗證已通過。
4、這是在我的開發中出現的問題,每個人出現的問題可能不一樣,並不一定都適合,算是提供一個思路吧!
5、建議:
對於命令的使用及含義的理解,最好在本地Git-Bash中自己測試驗證,這樣不但有助於理解,也能驗證其正確性,網上的也不一定都正確!