git

$sudo apt-get install git-core
生成公钥和密钥
$ ssh-keygen //一直回车
generate private key and public key in directory:~/.ssh
add the public key to administrator and add it to the Gerrit
-----
~/.gitconfig
[user]
name = ha.x.ya
email = ha.x.ya@sonymobile.com

[url "ssh://ha.x.ya@review.sonyericsson.net:29418/"]
pushInsteadOf = git://review.sonyericsson.net/
[url "ssh://git@192.168.65.11/home/gerrit/semc_mirror/"]
insteadOf = git://review.sonyericsson.net/
insteadOf = git://android.git.kernel.org/

[color]
ui = auto

-------------

if something wrong

Agent admitted failure to sign using the key
ssh-add ~/.ssh/id_rsa

-----------------------------------------------

repo 安装
mkdir ~/bin
PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

修改执行权限
chmod a+x ~/bin/repo
$ repo init -u https://android.googlesource.com/platform/manifest
$ repo sync//从服务器上下载源码

 ----------------------------

-------------书签----------------------------
ma     把当前位置存成标签a
`a     跳转到标签a处

----------------------------------------------

git status //检查当前代码是否有修改位置
git add file.name //将修改的文件提交到本地库
git commit -am "haha" //提交代码
git commit -a //提交代码并按模版写注解

git branch branchname //以当前branch为base新增一个子分支
git branch origin/jb-hummer-docomo branchname //以origin/jb-hummer-docomo为基础创建branchname分支
git branch -D branchname //删除一个分支
git branch -r // 查看远程分支
git branch -a //查看所有分支
git checkout branchname //切换到分支branchname
git checkout filename //  把某个文件checkout

git rebase
git checkout -b mybranch origin/jb-hummer-common
git show commit_id
git reset commit_id // 恢复到某个版本
git log //查看日志
git reset --soft HEAD^ //删除最近的commit
muhe221@ubuntu:~$ vi .gitmsg.template //修改comment模板


git commit -a
git push origin HEAD:refs/for/jb-hummer-common
git diff --cached
//查看绿色差异

git add filename
将红色部分添加索引,然后git commit -m 会提交蓝色部分的代码(不要-a)

git status
检查当前代码是否有修改位置
git add file.name
将修改的文件提交到本地库
git commit -m "haha"
提交代码

git branch branchname
新增一个分支
git checkout branchname
切换到分支branchname

--------------------------------------------

/.repo/manifest.xml
<default remote="origin" revision="rhine-1.1.1" sync-j="4"/>
//该repo没有创建rhine-1.1.1分支,直接以6ee428511eb8929a8d442738d3f28c120a134ceacheckout
<project name="device/generic/goldfish" revision="6ee428511eb8929a8d442738d3f28c120a134cea"/>
//该repo创建了rhine-1.1.1分支
<project name="device/qcom/common" revision="rhine-1.1.1">
---------------------------------------------------
ssh -X caoming0510@192.168.65.14
gitk //查看分支

gitk file //查看某个文件修改情况
---------------------------------------------
沿用父版本的repo
git checkout -b gap-close-p1
<project name="platform/external/tinyalsa" path="external/tinyalsa" revision="e8e9e3666f0a4b970892f2c83500f57adfa5f3d0"/>
git checkout e8e9e3666f0a4b970892f2c83500f57adfa5f3d0

------------------------------------------------------------------------

git log -S "audioManager.isWiredHeadsetOn” services/java/com/android/server/NotificationManagerService.java

repo forall -c "git log --grep="DMS10112903""

------------------------------------------

make -j8 fullbuild 2>&1 | tee build.log

---------------------------------
git blame
----------------------------------
reset 最后一个patch
git reset --soft HEAD~

---------------------------------------

解决patch冲突时使用
meld policy_hal/AudioPolicyManager.cpp

或者使用命令
git mergetool
这个命令可以直接帮你把一些冲突解决
/////////////////////////////////////////////////////

git reset --hard 5c678
一个patch id的前几位就可以识别一个patch

git 修改最后一个已经被提交的commit 的信息
git commit --amend
git reset --hard
gitk
gitk filename
git format-patch -1
git reset --hard 5c678

-------------------------------

git cherry-pick -x patch-id
不要运行两次,否则可能会出错
比如这个patch插入一行代码a = b; 执行2次,那么可能会插入两行代码(这种事情概率很低,但是可能会发生,比如使用脚本Cherry pick很多path的时候)

-------------------------------------------

gitk重新开一个窗口

muhe221@muhe:~/code/art/runtime$ gitk runtime.cc &

----------------------------------------------------------------

git reset --hard HEAD  //same to git reset --hard

git reset --hard HEAD^ //remove unmerged patch and reset to remote master hardly

git commit --amend

 ssh -X caoming0510@192.168.65.14   //大写case so as to use gitk

---------------------------------------

git apply只打上patch但是没有commit信息

git am 用了git apply,用它打补丁会生成commit信息。如果出现错误
previous rebase directory ../.git/rebase-apply still exists but mbox given
可以用$ git am --abort

---------------------------------------------

git blame lint.xml   //查看每行修改记录

meld lint.xml    //比较修改部分,并界面化显示出来,并显示差异部分

--------------------------------------------

mount remote server

sudo mount -t cifs //192.168.65.14/caoming0510/work/l-kitakami-softbank/vendor/semc/packages/apps/chameleon ~/work/chameleon -o user=caoming0510,pass=ebadde,workgroup=WORKGROUP,iocharset=utf8,uid=1000,gid=1000,rw

sudo umount ~/work/chameleon

 

-t<文件系统类型> 指定设备的文件系统类型

cifs Common Internet File System(通用网络文件系统)

-o<选项> 指定加载文件系统时的选项。有些选项也可在/etc/fstab中使用。这些选项包括:
async 以非同步的方式执行文件系统的输入输出动作。
atime 每次存取都更新inode的存取时间,默认设置,取消选项为noatime。
auto 必须在/etc/fstab文件中指定此选项。执行-a参数时,会加载设置为auto的设备,取消选取为noauto。
defaults 使用默认的选项。默认选项为rw、suid、dev、exec、anto nouser与async。
dev 可读文件系统上的字符或块设备,取消选项为nodev。
exec 可执行二进制文件,取消选项为noexec。
noatime 每次存取时不更新inode的存取时间。
noauto 无法使用-a参数来加载。
nodev 不读文件系统上的字符或块设备。
noexec 无法执行二进制文件。
nosuid 关闭set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位。
nouser 使一位用户无法执行加载操作,默认设置。
remount 重新加载设备。通常用于改变设备的设置状态。
ro 以只读模式加载。
rw 以可读写模式加载。
suid 启动set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位,取消选项为nosuid。
sync 以同步方式执行文件系统的输入输出动作。
user 可以让一般用户加载设备。

--------------------------------------------

git clone ssh://caoming0510@192.168.65.11:29418/temp/platform/vendor/semc/packages/apps/chameleon -b feature-chameleon
git push ssh://caoming0510@192.168.65.11:29418/temp/platform/vendor/semc/packages/apps/chameleon HEAD:refs/for/feature-chameleon

------------------------------------

linux find grep组合使用

 find ./ -name  *.java  -exec grep -n "Text" {} \;

find ./ /( -name "*.h" -or -name "*.c" /) -exec grep -in "helloworld" {} \;

-----------------------------------------

  b)第二个提交:将platform/vendor/semc/packages/apps/chameleon在featuren-chameleon分支的所有提交squash成一个commit到master分支,命令:

       git clone git://review.sonyericsson.net/platform/vendor/semc/packages/apps/chameleon -b feature-chameleon
       git checkout master
       git merge --squash feature-chameleon
       git commit
--------------------------------------------
mutian@mutian:~/code/6753CRC/art/runtime$ git diff
error: cannot run extDiff: No such file or directory
external diff died, stopping at runtime/runtime_android.cc.

mutian@mutian:~/code/6753CRC/art/runtime$ git config --global --unset diff.external   //恢复默认配置
----------------------------------------------------------

------------------------.gitconfig---------------------------------------

[url "ssh://sheng.chen@review.sonyericsson.net:2108/"]
        insteadOf = git://review.sonyericsson.org/


[url "ssh://sheng.chen@review.sonyericsson.net:2108/"]
        pushInsteadOf = git://review.sonyericsson.org/

[user]
        name = ShengChen
        email = sheng.chen@sonymobile.com
[color]
        ui = auto
---------------------------------------------------------------------

 

删除文件

git rm file1

删除文件夹

git rm -r  dir1

删除以ab*开头的文件夹

git rm ab* 

提交的时候不验证commit格式规范

git commit --commit --no-verify

 

所有代码切换到caoming分支

repo start caoming --all

使用repo命令提交当前仓库的代码

repo upload .

posted @ 2014-11-13 10:05  牧 天  阅读(373)  评论(0)    收藏  举报