Repo和Git 版本管理常用命令總結

2021-05-25 03:04:45 字數 4895 閱讀 8107

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進行本地操作,比如...