2012年7月27日 星期五

[Git] 工作上常使用到的git指令


@可以看某個git check point的詳細紀錄 
git log -p -l 2afeedb08454260516db332d70e661c3ae35e216 

@git 退版 
git checkout -b GoogleReader 2afeedb08454260516db332d70e661c3ae35e216 
說明:新增一個GoogleReader的branch並還原到後面commit point的時間版本 

@建立git push rule的範本 
git config commit.template ~/git-template 

@建立新的branch 
git branch 'branch name' 
Ex. git branch working; //建立一個名字為working的branch 

@刪除branch 
git branch -D 

@只加修改過的檔案, 新增的檔案不加入 
git add -u


@個人資料設定
git config --global user.name "First Last" /* 設定使用者名稱 */
git config --global user.email "user@example.com" /* 設定使用者電子郵件 */

@設定commit的template

1.使用指令方式設定
$ git config --global commit.template $HOME/.git-template
$ git commit

2.可以直接在.gitconfig裡設定
[commit]
template = /home/frank/.git-template


@git log 使用方式
1.查看最近2次的提交歷史紀錄
git log -2

2.在該資料夾下看誰在git server上更改過的歷史紀錄
git log .


3.查看file1文件的提交紀錄 
git log filename

4.查看送交更改過檔案,計算每個檔案中被更改的行數
git log --stat



@git init 的方式
1.在初始化git過程時最好使用 git init  --bare而不要使用:git init

由於初始化的git目錄中,存在一些其它與git本地相關的文件或是目錄,導致無法push code。

--bare
在不加--bare所init完的結果,會是在目前的working目錄下建立.git目錄,並把上述的git相關檔案放在.git目錄裡。
加了--bare的話,則是不建.git目錄,而把裡面的檔案直接放在目前目錄下。
適合在沒有修改檔案或開發的機器上,ex GIT server。
好處是只要maintain git repository,project的資料只存在repository中,不需要再複製一份最新的版本出來,會省點空間。

2.上傳檔案
git push origin master 


@設定指令的縮寫
git config --global alias.st status


@git reset使用方式
使用git reset有兩種情況

1. git reset --soft HEAD^
只會撤銷上一個commit,通常用在少加或加錯檔案,此時可以打此指令,在重新git add和git commit。

2.git reset --hard HEAD^
不只撤銷commit,連commit裡列表修改過檔案,都會還原成未修改的狀態,所以要謹慎使用。

3. git commit --amend
此指令通常用在commit log寫錯時,可以打此指令,修改commit log後,再上傳。



@重新命名git branch
假設現在有兩個 branch, master 跟 old-branch ,目前在 master ,
想要把 old-branch 的名字改成 new-branch 的話,請輸入
git branch -m old-branch new-branch

如果現在已經在 old-branch ,想要直接把名字改成 new-branch 的話,就輸入:
git branch -m new-branch



@當repo sync遇到衝突時

如下所示,會列出下面的訊息
warning: squelched 1295 whitespace errors
warning: 1300 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging Android.mk
CONFLICT (content): Merge conflict in 
Android.mk
Recorded preimage for '
Android.mk'
Failed to merge in the changes.
Patch failed at 0001 Symptom : [UI framework]
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".

表示Gaia.mk遇到衝突,需要手動修改

解法:
切資料夾到gaiaframework
1.打開Android.mk,搜尋===的字串,手動修改衝突
2.修改完後,執行git add。
3.接著打 git rebase --continue,系統會幫忙處理更改過的commit。


@將code上傳到Gerrit的步驟

1.到各個要上code的branch,進行git add --> git commit
2.先repo sync確保已抓到最新的code
3.打repo upload
4.把#註解到的branch給去掉
5.upload成功。
6.到Gerrit上增加reviewer。

沒有留言 :

張貼留言