一. git 常用
1. git 常用的命令
2.一般情况下这些就够了
3. 提交代码后,在未提交的代码上进行修改
4. repo
4.1 用repo diff生成补丁文件并patch
5. 小技巧
6. 下载代码
1. git 常用的命令
- 1. 查看log
- 加上--name-staus可以看到改动的文件
- git log --name-status
- 1.1 查看改动的内容
- git diff
- git diff <filenam> ;;单独查看某个文件的内容改变
- 1.2 查看命令历史
- git reflog
- 刚开始的id也可以用
- 1.3 查看某一个文件的详细提交记录,已经都曾经都修改过那些地方
- git log -p filename
-
- 2. 切换到某个branch
- git checkout -b tmp
- git checkout obox
- 3. 把新增文件添加到提交
- git add
- 4. 取回
- 4.1 取回某个文件
- git checkout -- file ;;当修改了file,感觉不对,同步一下服务器的file
- git reset HEAD file ;;当修改了file,并git add后要放弃修改,取消暂存区,然后再checkout
- 分两步,第一步用命令git reset HEAD file,抵消git add,然后再git checkout --file
- 4.2 rm file的恢复
- git checkout -- file
- 4.3 git rm file的恢复
- git reset HEAD ;;需要加上这个
- git checkout -- file
- 5.
- git clone时一定加-b,切换到某个分支
- git clone ssh://W@gerrit.ireadygo.com:29418/platform/packages/apps/Bluetooth -b much-tegra-kk-mr2
-
- 6. 回退到某个版本
- git reset --hard af5928ed51070dbd681c3e387b382c1b6e78cda9
- git reset --mixed af5928ed51070dbd681c3e387b382c1b6e78cda9
- 其中hard后面的数字是通过: git log中的 commit的id
- 7. 取回某个版本
- git fetch ssh://W@gerrit.ireadygo.com:29418/platform/frameworks/base refs/changes/58/5158/2 && git cherry-pick FETCH_HEAD
-
- 8. 切换分支
- git checkout obox
-
-
- 9. git add的取消
- git add 多加了文件,如何取消
- git rm --cached ../../sound/soc/tegra/Makefile
-
- 10. delete的文件需要git rm
git rm -
- 11. 使用vi
- $sudo git config --system core.editor vim
- $cat /etc/gitconfig
- [core]
- editor = vim
- git reset HEAD
- git commit --amend
-
- git status
- git diff
- git add ./Generic.kcm
- 或者
- git add ./
- git commit -m "libstagefright ext: add dts and ape Supported config, add ape extradata support"
- git push msp obox:refs/for/refs/heads/much-tegra-kk-mr2
3. 提交代码后,在未提交的代码上进行修改
- a.先切找到另一个分支tmp
- git checkout -b tmp
-
- b.在另一个分支tmp
- git reset --hard d50a360f2023aa4e07004c01a8eebf1406eb82b8
-
- c.把要还原的文件复制一份
- cp media_codecs.xml ~/
-
- d.切换回原先的分支
- git checkout obox
-
- e.把原先的文件复制回来
- cp ~/media_codecs.xml .
- f. 再进行修改就ok了
4. repo
4.1 用repo diff生成补丁文件并patch
- repo的help有如下说明:
- The -u option causes 'repo diff' to generate diff output with file paths
- relative to the repository root, so the output can be applied
- to the Unix 'patch' command.
- repo diff 带上-u参数可以生成相对于android源码根目录的路径,这样就可以直接用patch打补丁了
-
- cong@msi:/work/mtk$ repo diff -u > 1.txt //-u参数生成补丁文件
- cong@msi:/work/mtk2$ patch -p1 < ./1.txt //patch打补丁
- patching file kernel/drivers/i2c/i2c-smbus.c //-u生成的补丁文件是对整个android源码目录者有效的
- patching file kernel/include/linux/printk.h
- patching file system/core/include/cutils/klog.h
- 将tab转为4个空格
- sed 's/\t/ /g' ./file > file_new
-
- 在vi中将tab转为4个空格
- :1,$s/\t/ /g
- a. repo 下载项目
- repo init -u ssh://W@gerrit.***.com:12345/platform/muchmanifest -b test
-
- b. git下载
- git clone ssh://W@gerrit.ireadygo.com:29418/platform/testproject -b test
- Projects-->List搜项目名
- -b 的参数是在projects-->Branches中的Branch Name
-
- 上传:
- git push origin much-kk-mr1-mp6:refs/for/refs/heads/much-kk-mr1-mp6