Linux嵌入式开发日常技术总结(1)
2020-11-18 本文已影响0人
QuietHeart
这里主要介绍嵌入式开发中常用的技术。
代码管理
git
代码结构样例
$ tree -a -L 2
.
├── .git
│ ├── branches
│ ├── COMMIT_EDITMSG
│ ├── config
│ ├── description
│ ├── FETCH_HEAD
│ ├── HEAD
│ ├── hooks
│ ├── index
│ ├── info
│ ├── logs
│ ├── objects
│ ├── ORIG_HEAD
│ ├── packed-refs
│ └── refs
└── release
└── apollo
9 directories, 8 files
Git工作流程大致如下:
代码清理(reset&clean)
清除未提交的本地工作
$git reset --hard
$git clean -xdf
或
$rm -rf *
$ls -a
.git
$git reset --hard
关于 git reset
This form resets the current branch head to <commit> and possibly updates the index (resetting it to the tree of <commit>) and the working tree
-
git reset --soft
: 不会更新index内容,也不会更新工作目录(退至特定的commit,但是保持staged与工作目录不变)。 -
git reset --hard
: 同时更新index内容和工作目录(比如退至特定的commit,同时工作目录也做相应更新)。 -
git reset [--mixed]
: 更新index内容,但是不更新工作目录内容(比如将log看到的已经被commit的提交,变成staged的状态)。
提交与拉取、推送(commit,pull&push)
$git pull
$git pull --rebase
$git commit -a -m 'xxx'
$git add/rm
$git commit -m 'xxx'
$git commit --amend
$git push origin HEAD:refs/for/2K18_UI_FFC_tpv
$git push origin HEAD:refs/for/2K18_UI_FFC_tpv%r=jerome.wang@tpv-tech.com,r=kiko.han@tpv-tech.com
分支与合并(branch,merge,checkout)
相关命令如下:
$git branch [-l]
$git branch -r
$git branch -a
$git branch <name> [<start>]
$git checkout -b <name> [<start>]
$git merge <branch>
$git cherrypick <commit id>
关于期间分支的变化情况,可参考: man git rebase
others
$git checkout <file>
$git blame <file>
$git log
$git log --graph
$git log --author=<pattern>
$git status
$git format-patch <start>
repo
代码结构
$ tree -L 2 -a
.
├── android
│ └── n-base
├── apollo
│ ├── custom
│ ├── linux_core
│ ├── linux_mts
│ ├── middleware
│ ├── mtk_obj
│ ├── oss
│ ├── sys_build
│ ├── target
│ ├── third_party
│ └── tools
└── .repo
├── manifests
├── manifests.git
├── manifest.xml -> manifests/default.xml
├── project.list
├── project-objects
├── projects
├── repo
└── .repo_fetchtimes.json
19 directories, 3 files
初始化本地代码库
初始化主要是针对manifest与repo项目
repo init
--mirror
--reference <mirrorpath>
-u <remote url>
-b <repo branch>
举例:
#创建可被其它本地repo仓库引用的缓存镜像
$repo init -u ssh://url/tpv/platform/manifest -b 2k18_mtk_msaf_kane_n_devprod --mirror
#通过引用缓存镜像缩短下载整个代码仓库的时间减少项目占用空间
$repo init -u ssh://url/xxx -b xxx --reference xxx
#普通的初始化方式
$repo init -u ssh://url/xxx -b xxx
$repo init
注意:通过 mirror
指定的镜像缓存,可以减少下载代码的时间,并减少项目占用的空间。
代码同步与清理
主要通过 repo sync
来实现
举例:
#删除工作目录(保留.repo目录)
$rm -rf && ls -ap
.repo/
#从.repo恢复工作目录(不联网下载)
$repo sync -l
#从.repo获得所有工作目录并与远端更新
$repo sync
$repo sync -j4
#从.repo获得当前工作目录并与远端更新
$repo sync .
其它
其它命令参见 repo --help
$repo forall -c "git xxx"
$repo info