repo init -u [email protected]:i700t_60501010/platform/manifest.git -b froyo_almond -m m76xxtsncjnlya60501010.xml
repo sync
repo forall -c git checkout --track origin/i700t_60501010 -b [你的本地分支]
或者:git clone [email protected]:6120_gingerbread/arm9-6120.git
git checkout --track origin/arm9_6120 -b [你的本地分支名]
2. 伺服器新加倉庫同步:
請按如下步驟取得lanucher_wpon的**:
1:~> cd i700t/.repo/manifest
2: i700t/.repo/manifest> git pull --rebase
3: i700t/.repo/manifest> cd ../..
7:git checkout --track origin/froyo_almond -b [你的本地分支]
3. 上傳本地修改到伺服器
repo forall -c git add .
repo forall -c git reset --hard
repo forall -c git pull --rebase 和伺服器同步(要上傳**前,一般先進行此操作)
git add . 或git add 檔名 新增當前倉庫修改的檔案
git commit -m "..." 在引號中新增你的修改記錄
git push origin 本地分支名:froyo_almond 上傳本地修改的**
4. 設定一些預設的全域性變數,對所有工程**有效
git config --global user.name yourmail
git config --global user.email yourmail
git config --global push.default tracking 這樣後續git push 後面不用帶引數
5.檢視修改記錄
git log 本地倉庫修改記錄
repo forall -c git log --since="2011-04-19" --until="2011-04-21" 按條件檢視工程所有倉庫修改記錄
repo status 檢視工程中所有倉庫的修改狀態(包括檔案位置)
git status 檢視倉庫修改狀態
6. 分支相關
git branch 檢視本地branch
git branch -r 檢視遠端branch
git branch -a 檢視所有branch
git branch -d (-d) (branch name) 刪除branch
cat .git/config 可以檢視本地branch一些資訊
7. 修改恢復相關
git checkout filename1 filename2 ... 取消本地修改,和伺服器同步
git stash
git reset --soft head_commit 恢復到最後一次commit,保持**修改
git reset --hard commit 恢復到指定一次commit,放棄之前所有修改
#回退a.py這個檔案的版本到上乙個版本
git reset head^ a.py
git reset commitno filename
8. 本地某倉庫出問題了,不好鬧騰時,刪除之,並重新同步跟蹤
project_folder/vendor/qcom$ rm -rf proprietary/ 進到相應目錄,刪除之
project_folde$ repo sync platform/vendor/qcom/proprietary 重新repo sync,後面路徑名稱可檢視:
gedit .repo/manifest.xml
git branch -a ----列舉所有branch
git branch -d 700_arm11_server
git branch -d 700_arm11_server_wifi --刪掉所有本地branch
git checkout --track origin/froyo_almond -b 700_arm11_server 然後track遠端branch,重新建立本地分支
切換分支
git checkout another_branch 和建立分支就差-b引數
9.tag的使用
git tag [tag_name] [version],在對應版本上(一般用change的sha1),建立tag
git tag -l 列出當前tag
git tag -d [tag_name] 刪除tag
有了tag以後,可以使用git checkout [tag_name] -b [branch_name]來檢出對應tag時刻的**。也可以用tag name來實現diff等功能。
10. patch的使用
git diff filename1 filename2 ... 修改位置對比,檢視原始碼
git diff > ***.patch 將修改的地方打成乙個patch
11. 後續有用到的命令繼續新增
git revert 是撤銷某次提交。git reset –hard,才是退回到以前的版本
git reset --soft commitnum 儲存**修改的reset,但這個時候無法使用git diff 進行比較修改的檔案,必須:
git reset filename filename 這樣就可以git diff檢視
git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9 b8e7b00c02b95b320f14b625663fdecf2d63e74c 檢視某兩個版本之間的差異
git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9:filename b8e7b00c02b95b320f14b625663fdecf2d63e74c:filename 檢視某兩個版本的某個檔案之間的差異
git 命令別名
$ git config –global alias.co checkout // co將會成為checkout的別名
$ git config –global alias.br branch
$ git config –global alias.ci commit
$ git config –global alias.st status
$ git config –global user.name 「username」
$ git config –global user.email [email protected]
12. gitk使用
gitk & 可以讓終端繼續編寫執行命令
gitk 檔名 可以檢視某個檔案的修改記錄
git show (commit)可以看**差異,類似 gitk
gitk -50 ubuntu64位開啟gitk會導致機子變卡,後面帶數字可解決此問題
13. 合併衝突
git pull的原理,實際上git pull是分了兩步走的,(1)從遠端pull下origin/master分支(2)將遠端的origin/master分支與本地master分支進行合併。
方法一:如果我們確定遠端的分支正好是我們需要的,而本地的分支上的修改比較陳舊或者不正確,那麼可以直接丟棄本地分支內容,執行如下命令
(看需要決定是否需要執行git fetch取得遠端分支):
$:git reset --hard origin/master
或者$:git reset --hard orig_head
解釋:git-reset - reset current head to the specified state
--hard
resets the index and working tree. any changes to tracked files
in the working tree since are discarded.
方法二:我們不能丟棄本地修改,因為其中的某些內容的確是我們需要的,此時需要對unmerged的檔案進行手動修改,刪掉其中衝突的部分,然後執行如下命令
$:git add filename
$:git commit -m "message"
方法三:如果我們覺得合併以後的檔案內容比價混亂,想要廢棄這次合併,回到合併之前的狀態,那麼可以執行如下命令:
$:git reset --hard head
14 如何新增之前沒有跟蹤的檔案
比如kernel中要新增bin檔案:開啟這個庫的.gitignore檔案,然後刪掉 bin 不跟蹤,然後就可以git add bin
15. 出現repo sync 不能更新**,但單個庫 git pull 可以更新 --> 原因當前 manifest.xml 指向的xml 檔案不對
# cd .repo
# ll ---> 列出 manifest.xml -> manifests/default.xml
repo init -m ***.xml 重新指向你想要的xml
Repo和Git 版本管理常用命令總結
repo init u git 192.168.1.11 i700t 60501010 platform manifest.git b froyo almond m m76xxtsncjnlya60501010.xml repo sync repo forall c git checkout tra...
Repo和Git 版本管理常用命令總結
repo init u git 192.168.1.11 i700t 60501010 platform manifest.git b froyo almond m m76xxtsncjnlya60501010.xml repo sync repo forall c git checkout tra...
基於Repo和Git的版本管理
涉及android源 的工作需要用到的git和repo工具。多數情況下我們可以用git工具代替repo,或者兩者混用組合成更複雜的命令。而repo工具可以使android的網路操作更加簡潔。git是乙個開源版本管理系統,旨在處理各種知識庫發布的大型專案。一般來說,我們可以使用git進行本地操作,比如...