Git_Repo常用指令

一:repo指令
1 repo init (下载repo并克隆manifest)

    下载一个Repo项目,只需要三条命令:

    $    repo    init    --no-repo-verify    -u    <URL>    -m    <manifest-file>
    $    repo    sync
    $    repo    start    --all    master

    repo init中的使用到参数含义如下:

      -u:指定manifest仓库的路径,这是一个git仓库地址

      -m:指定manifest仓库中的某个manifest文件

      --no-repo-verify:设定不要对repo的里程碑签名进行严格的验证。

       -b:选择一个maniest仓库中的一个特殊的分支

 

2 repo sync(下载代码)

Usage:

repo sync [<project>…]

用于参照清单文件.repo/manifest.xml克隆并同步版本库。如果某个项目版本库尚不存在,则执行repo sync 命令相当于执行git clone,如果项目版本库已经存在,则相当于执行下面的两条指令:

         git remote update

相当于对每一个remote源执行了fetch操作

         git rebase origin/branch

针对当前分支的跟踪分支执行rebase操作。

Example:

repo sync

也可以选择克隆其中的一个项目:

repo sync platform/build


3 repo start(创建并切换分支)

Usage:

repo start  <newbranchname> [--all | <project>…]

    刚克隆下来的代码是没有分支的,repo start实际是对git checkout –b 命令的封装。为指定的项目或所有项目(若使用—all参数),以清单文件中为设定的分支,创建特性分支。这条指令与git checkout –b 还是有很大的区别的,git checkout –b 是在当前所在的分支的基础上创建特性分支,而repo start是在清单文件设定分支的基础上创建特性分支。

Example:

  repo start  master  --all

假设清单文件中设定的分支是gingerbread-exdroid-master,那么执行以上指令就是对所有项目,在gingerbread-exdroid-master的基础上创建特性分支stable。

  repo start  master  platform/build platform/bionic

假设清单文件中设定的分支是master,那么执行以上指令就是对platform/build、platform/bionic项目,在master的基础上创建特性分支master
4 repo checkout(切换分支)

 Usage:

repo checkout <branchname>  [<project>…]

实际上是对git checkout 命令的封装,但不能带-b参数,所以不能用此命令来创建特性分支。

Example:

repo checkout crane-dev

repo checkout crane-dev  platform/build  platform/bionic
5 repo branches(查看分支)

Usage:

repo branches [<project>…]

Example:

repo branches

repo branches platform/build platform/bionic
6 repo diff(查看工作区文件差异)

 Usage:

repo diff [<project>…]

   实际是对git diff 命令的封装,用于分别显示各个项目工作区下的文件差异。

Example:

repo diff                            ---查看所有项目

repo diff platform/build platform/bionic  ---只查看其中两个项目
7 repo prune(删除已经合并分支)

   实际上是对git branch –d命令的封装,该命令用于扫面项目的各个分支,并删除已经合并的分支,用法如下:

repo prune [<project>…]


8 repo abandon(删除指定分支)

   实际上是对git branch –D 命令的封装,用法如下:

repo abandon <branchname> [<project>…]
9 repo status(查看文件状态)

实际上是对git diff-index、git diff-filse命令的封装,同时显示暂存区的状态和本地文件修改的状态

$repo/repo status platform/bionic


以上的实例输出显示了platform/bionic项目分支的修改状态

         每个小节的首行显示羡慕名称,以及所在分支的名称

         第一个字母表示暂存区的文件修改状态

         -:没有改变

         A:添加(不在HEAD中,在暂存区中)

         M:修改(在HEAD中,在暂存区中,内容不同)

         D:删除(在HEAD中,不在暂存区)

         R:重命名(不在HEAD中,在暂存区,路径修改)

         C:拷贝(不在HEAD中,在暂存区,从其他文件拷贝)

         T:文件状态改变(在HEAD中,在暂存区,内容相同)

         U:未合并,需要冲突解决

         第二个字母表示工作区文件的更改状态

         -:新/未知(不在暂存区,在工作区)

         m:修改(在暂存区,在工作区,被修改)

         d:删除(在暂存区,不在工作区)

         两个表示状态的字母后面,显示文件名信息。如果有文件重名还会显示改变前后的文件名及文件的相似度
10repo forall

 Usage:

repo forall [<project>…] –c <command>

迭代器,可以在所有指定的项目中执行同一个shell指令

 Options:

         -c:后面所带的参数着是shell指令

         -p:在shell指令输出之前列出项目名称

         -v:列出执行shell指令输出的错误信息

    eg:repo forall -c git status --ignored  对所有项目显示git状态

            repo forall -c git reset --hard HEAD~1  对所有分支,回退上一工作分支
其他指令:

    从本地分支切换到特定分支:
    repoclean -a  //清除本地分支修改,恢复到初始repo sync版本
    repo branch  //查看分支
    repo abandon master   //清除本地master仓库分支(abandon 清除分支命令)
    repo prune  //删除已合并分支
    repo init -m 分支名  //切换到对应分支
    repo sync //更新分支
    repo start master --all  //初始化所有分支,基于master
    repo info  //当前repo信息

    此时repo branch 会显示
    *  master                    | in all projects
二:git指令

                git clone <URL>   //克隆manifest,可查看当下仓

                git add  //暂存修改
                git checkout -- file.xx  //取消对文件的修改
                git commit //提交到本地
                    -m "提交说明"
                git reset HEAD file.xx  //取消本地暂存的文件
                git commit --amend  //修订上次提交
                git status  //检查当前文件状态
                git log     //查询git提交记录

                git reset --hard HEAD~1(number) 恢复到第几个提交的状态

                git diff     //显示尚未暂存的改动
                git    diff --cached    
                git    diff --staged    //这两个指令,查看已暂存的将要添加到下次提交里的内容
                git diff --check     //检查空白错误

                git    rm    //从git仓库删除文件
                git    mv    file_from    file_to    //重命名文件
                git    remote    //对远程仓库的操作
                git fetch remote-name    //拉取远程仓库
                git    push origin    master    //推送到远程仓库
                git tag //给仓库版本打标签

                git config     //为git命令设置别名
                $    git    config    --global    alias.co    checkout
                $    git    config    --global    alias.br    branch
                $    git    config    --global    alias.ci    commit
                $    git    config    --global    alias.st    status

                分支操作(工作分支,not gerrit仓库代码分支)
                git    branch 分支name    //创建分支
                git checkout 分支name     //切换到此分支
                合并为  git checkout -b 分支name
                //将hotfix合并入 master
                $    git    checkout master
                $    git    merge hotfix
                //删除 hotfix分支
                $    git    branch -d hotfix

                git    mergetool        //合并图形化工具


                git stash list    显示保存进度的列表
                git show stash@{0}  # see the last stash

                git stash pop [–index] [stash_id]

                    git stash pop 恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
                    git stash pop --index 恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
                    git stash pop stash@{1}恢复指定的进度到工作区。stash_id是通过git stash list命令得到的
                    通过git stash pop命令恢复进度后,会删除当前进度。

                git stash apply [–index] [stash_id]  除了不删除恢复的进度之外,其余和git stash pop 命令一样。

                git stash clear

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值