本文共 1618 字,大约阅读时间需要 5 分钟。
開頭先來講幾個重要的觀念:
1. Android是一個workspace裡面會包含很多project,repo主要針對android這個大workspace,而git則是針對每個project操作;所以repo的操作,都可以細化成許多對個別project的git操作喔。
2. 任何的修改,都需要對應一個branch,不過這裡的branch代表的是一個change需求,而不是以前認為的SVN path。因此,branch可以是new feature,也可以是bug fix。在repo & git的概念裡,任何的改動都是因為有改動的需求,所以必須先切換到某個branch(改動需求)上,才可以把改動的東西放上gerrit server喔。
實做上,比較謹慎的人可以自己建立很多branch用來做不同的工作;也可以只建立一個branch,然後都用這個branch做commit的動作。
3. git這套version control機制,不同於以往SVN,commit以後就到server上了;他有個local commit (staging)的概念。所有的改動應該先做local commit,成為staging狀態,之後才能commit到gerrit server。請看下圖,任何的修改都得先做local commit以後,才能commit到gerrit上。
講完重要的觀念後,下面就是一些實務上常用到的command,提供參考: (還有很多command,其實只要在android下打repo或者是在project下打git都可以看到用法的介紹了)
=======同步Server上的改動**=============
**
repo sync
or
repo sync [PROJECT] --> 針對特定project
=======revert還沒stage的改動**======
**
cd [PROJECT]
git checkout [FILE_NAME] --> 針對特定檔案revert
or
git reset --hard HEAD --> 針對一整個project的改動全部都revert
=======revert已經stage的改動**======
**
cd [PROJECT]
git reset HEAD [FILE_NAME]
=======如何退掉commit的改動**==========
**
git reset --soft HEAD^
=======Branch相關操作**=================
**
每次當要改動的時候,就得需要建立一個新的branch
git branch [BRANCH_NAME]
一次把所有project都建立branch
repo start [BRANCH_NAME] --all
如果要切換到別的branch
git checkout [BRANCH_NAME]
一次把所有project都切換到別的branch
repo forall -c git checkout [BRANCH_NAME]
要查詢目前local有建立了多少branch
git branch
or
repo branch
======列出修改了哪些檔案**==============
**
repo status
======把新增的檔案和修改的檔案加入**stage========
**
cd [PROJECT]
git add [FILENAME] [DIR_NAME]
git commit
注意: git commit之後需要填note,第一行為Summary,然後空一行,第三行以後則是Detail
======上傳已經stage的改動到**gerrit====
**
repo upload
转载地址:http://ohsgi.baihongyu.com/