美文网首页
git和repo

git和repo

作者: 小可_34e0 | 来源:发表于2021-09-03 10:44 被阅读0次

    参考:https://www.cnblogs.com/mengdd/p/4153773.html
    Git:
    Git是一种分布式的代码管理工具,在一个大型项目里面需要很多小项目构成,每一个项目都是一个独立的git仓库,需要自动化创建分支,由repo来完成,其功能包括:自动化创建分支,查看分支状态、提交代码、更新代码等基础Git操作。

    Repo仓库通过manifest仓库可以获得所有AOSP子项目仓库的元信息。
    整个运行的步骤:
    ①先从官网上获取repo脚本(用curl工具从官网获得并保存再~/bin/repo。。最后使用chmod命令赋予执行权限)
    ②下载好之后用repo init -u进行安装(其实是安装了Repo仓库和Manifest仓库)
    其中repo脚本中会有一个findrepo函数从当前目录往上遍历查看是否已经存在repo,若已经存在则会显示repo has initialed
    一个标准的repo需要具备:

    Bundle文件是git提供的一种机制,用来解决不能正常通过git、ssh和http等网络协议从远程地址克隆Git仓库的问题。简单来说,就是我们可以用“git bundle”命令来在一个Git仓库创建一个Bundle文件,这个Bundle文件就会包含Git仓库的提交历史。把这个Bundle文件通过其它方式拷贝到另一台机器上,就可以将它作为一个本地Git仓库来使用,而不用去访问远程网络。
    git常用的命令
    git init: 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹
    git clone:git clone [url]
    git clone https://github.com/tianqixin/runoob-git-test
    git status:查询repo状态
    git log:查看日志
    git log --oneline --number: 每条log只显示一行,显示number条.
    git log --oneline --graph:可以图形化地表示出分支合并历史.
    git log --decorate会显示出tag信息.
    git log --author=[author name] 可以指定作者的提交历史.
    git log --since --before --until --after 根据提交时间筛选log.
    --no-merges可以将merge的commits排除在外.
    git log --grep 根据commit信息过滤log: git log --grep=keywords
    默认情况下, git log --grep --author是OR的关系,即满足一条即被返回,如果你想让它们是AND的关系,可以加上--all-match的option.
    git log -S: filter by introduced diff.
    比如: git log -SmethodName (注意S和后面的词之间没有等号分隔).
    git log -p: show patch introduced at each commit.
    每一个提交都是一个快照(snapshot),Git会把每次提交的diff计算出来,作为一个patch显示给你看.
    另一种方法是git show [SHA].
    git log --stat: show diffstat of changes introduced at each commit.
    同样是用来看改动的相对信息的,--stat比-p的输出更简单一些.
    git add:将修改添加到暂存区 常用:git add .
    git diff:比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容.
    git diff HEAD:比较woking directory和上次提交之间所有的改动.
    git commit:提交
    git commit --amend 增补提交. 会使用与当前提交节点相同的父节点进行一次新的提交,旧的提交将会被取消.
    git reset
    这里的HEAD关键字指的是当前分支最末梢最新的一个提交.也就是版本库中该分支上的最新版本.
    --git reset HEAD: 这个命令用来把不小心add进去的文件从staged状态取出来,可以单独针对某一个文件操作: git reset HEAD - - filename, 这个- - 也可以不加.
    --git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
    --git reset --hard:使用git reset —hard HEAD进行reset,即上次提交之后,所有staged的改动和工作目录的改动都会消失,还原到上次提交的状态.彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉;
    git revert: 反转撤销提交.只要把出错的提交(commit)的名字(reference)作为参数传给命令就可以了
    git revert HEAD: 撤销最近的一个提交.
    git rm:移除文件
    git clean: / ** git remove**
    git stash: git stash将会把当前目录和index中的所有改动(但不包括未track的文件)压入一个栈,然后留给你一个clean的工作状态,即处于上一次最新提交处.
    git stash list会显示这个栈的list.
    git stash apply:取出stash中的上一个项目(stash@{0}),并且应用于当前的工作目录.
    也可以指定别的项目,比如git stash apply stash@{1}.
    如果你在应用stash中项目的同时想要删除它,可以用git stash pop

     删除stash中的项目:
     git stash drop: 删除上一个,也可指定参数删除指定的一个项目.
     git stash clear: 删除所有项目.changjian
    

    git branch:列出分支,常用:git branch -a
    git checkout:切换到一个分支 -b 创建并切换到新的分支
    git merge:把一个分支merge进当前分支
    git tag: 会在一个提交上建立永久性的书签,通常是发布一个release版本或者ship了什么东西之后加tag.
    比如: git tag v1.0
    git tag -a v1.0, -a参数会允许你添加一些信息,即make an annotated tag.
    git remote:
    如果你clone一个project,Git会自动将原来的url添加进来,别名就叫做:origin.
    git remote -v:可以看见每一个别名对应的实际url.
    git fetch:可以git fetch [alias]取某一个远程repo,也可以git fetch --all取到全部repo
    git pull: git pull会首先执行git fetch,然后执行git merge,把取来的分支的head merge到当前分支.这个merge操作会产生一个新的commit.
    git rebase:把一个分支的修改合并到当前分支
    git push:
    git reflog: git reflog是对reflog进行管理的命令,reflog是git用来记录引用变化的一种机制,比如记录分支的变化或者是HEAD引用的变化.

    repo常用命令:
    repo -init
    -u:指定一个URL,其连接到一个manifest仓库
    -b:选择manifest仓库中的一个特殊分支
    -m:在manifest仓库中选择一个xml文件

    同步代码:repo sync
    创建并切换分支:repo start可以为单个项目或所有项目以清单文件中已设定的分支为基础,在本地创建新的分支。

    查看分支:repo branches

    切换分支:repo checkout

    查看工作区文件的差异:repo diff

    查看文件状态:repo status

    删除指定分支:repo abandon branchname

    删除已经合并分支:repo prune
    将文件添加到index表中:将项目工作区中的改动添加到暂存区

    Repo stage -i(-i 给出界面让用户选择)

    设置远程仓库:repo remote addd remotename url

    遍历当前项目中的所有git仓库:repo forall -c

    合并多个分支:repo forall -p -c 给i他merge local

    打标签:repo forall -c git tag 标签名

    显示版本号:repo version


    相关文章

      网友评论

          本文标题:git和repo

          本文链接:https://www.haomeiwen.com/subject/eircwltx.html