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分支,命令:
error: cannot run extDiff: No such file or directory
external diff died, stopping at runtime/runtime_android.cc.
------------------------.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 .

浙公网安备 33010602011771号