git常用命令
git clone
git clone命令是代码克隆的命令,完整命令为:
git clone ssh://username@Gerrit-IP:29418/库名 –b 分支名
当我们在ssh配置文件 vi ~/.ssh/config 中添加了用户配置后,可以使用 git clone ssh://Gerrit-IP/库名 –b 分支名 下载
git pull
更新代码仓库
git branch
git branch 查看本地分支,可以使用git branch | grep XXX 进行有条件的查询
git branch –a 查看远程分支,类似的可以使用git branch -a| grep XXX 进行有条件的查询
git checkout
git 切换分支 远程分支名命令
git checkout –b 本地分支名 远程分支名 【远程分支名型如remotes/origin/master】
git add
git add是将修改提交到暂存区的命令常用的有:git add .和git add -u
git add . 是将所有变化提交到暂存区,包括修改内容及新文件
git add –u 是将修改过的文件提交到暂存区
通常情况下使用git add .即可
git rm
git rm 文件名 git上删除文件的命令,和手动删除之后git add .一样,可以看做是省了一个git add .
git status
查看有哪些文件做了修改,或者是否有新增/删除
git diff
git diff 不加参数默认比较工作区与暂存区
git diff [
git commit
git commit -m “” 提交到本地库“”中填写描述
git commit -amend 在上一笔提交的基础上追加提交
git commit -F commitmessge.txt 以此文件的格式提交描述
git log
查看提交log,包括commitid 提交描述 changeid
git merge
git merge 远程分支名 将远程分支合入到当前工作分支
一般会有大量冲突,需要工程师手动解冲突
一般SCM升级基线使用,不建议工程师手动使用
git cherry-pick
git cherry-pick [
如果有冲突需要手动解冲突
解冲突后需要git commit手动进行提交
或者在git add .后使用git cherry-pick –continue继续
git revert
git revert [
回退掉之后需要 git add . & git commit进行提交
git reset & git clean
git reset –hard HEAD~1 是回退到某个版本的操作,这边有几个参数
–soft 不删除改动代码,撤销commit,不撤销add | –mixed 不删除改动代码,撤销commit,撤销add | –hard 删除改动代码,撤销commit,撤销add
HEAD~1表示回退一次提交同理可以使用HEAD~2, HEAD~3等等HEAD代表的是当前的节点版本
git clean 一般和git reset –hard 一起用,reset影响被track过的文件,clean清理没有被track过的文件
git clean –dfx
通常情况下修改代码前忘记更新了可以用这个方法处理,处理完了使用git pull
git push
常规命令: git push username@hostname:29418/projects branch1:refs/for/branch2
查看仓库下的.git/config
例如:
[remote “origin”]
url = ssh://172.16.16.121/qc-repository/zprojects
fetch = +refs/heads/:refs/remotes/origin/
username@hostname:29418/projects 这一块参照url可以用origin替换
branch1代表本地分支如果是当前指向的工作空间可以用HEAD代替
branch2代表远程分支当同一个提交需要往两个不同的分支上提交的时候直接切换这边的分支名即可达成
简化后的形式为:git push origin HEAD:refs/for/branch2
git push的两种方式
HEAD:refs/for/branch2
使用refs/for/branch2提交会生成一条gerrit网址的链接需要reviewer合入
HEAD:refs/heads/branch2
使用refs/heads/branch2提交会直接推送到gerrit服务器上,很危险,一般不开放,需要发邮件向SCM申请
repo常用命令
Android 使用 Git 作为代码管理工具,使用 Gerrit 进行代码审核以便更好的对代码进行集中式管理,还开了 Repo 命令行工具,对 Git 部分命令封装,将百多个 Git 库有效的进行组织。
REPO根据manifest文件进行pull/push代码。
Manifest文件被称为清单文件个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本,清单文件以xml格式组织的,放在.repo/manifests这个库里面
remote元素:定义远程版本库caf以及地址172.16..
default元素:设置远程版本库caf以及默认分支master。
project元素:path属性表示在工作区克隆的位置,name属性表示该GIT库的远程版本库的相对路径。project元素的子元素copyfile,定义了项目克隆后的一个附件动作,从src拷贝文件到dest
repo init
Repo init 的完整命令如下:
repo init -u ssh://username@Gerrit-IP:29418/manifest -b branchname -m manifest.xml
同一个清单仓库分支中切换其他的xml文件,使用如下命令:
repo init -m manifest.xml
repo sync
repo sync 同步代码
repo sync project 可以选择只同步project库
repo sync -j$Thread 多线程更新
repo sync –dx 把代码回退至manifest清单文件中指定的revision并clean
repo sync –f 强制更新
以上命令可以拼接,例如:repo sync -c –no-tags –j8
repo start branch –all
给所有git库创建基于当前工作区分支的本地分支
repo checkout branch
所有git库分支切换至branch
repo branches
查看所有git库分支
repo diff [project]
查看工作区差异
repo stage -i
相当于给所有库git add -I
repo prune
删除已经合并的分支
repo abandon branch
删除指定分支
repo status
查看文件状态
repo forall -c ‘command’
迭代器,在所有git 库中执行command命令
repo forall -c ‘ID=’git log –before=”2019-08-08 12:00” –after=”2019-08-08 13:00” -1 –pretty=format:”%H”‘; git reset –hard $ID’
这条指令是将所有的git库回退到某一天的代码
repo upload
把代码推送至gerrit审核服务器