zoukankan      html  css  js  c++  java
  • Git与Repo 的使用

    一、Linux常用命令

    pwd           用于显示工作目录,执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。

    chmod      用来变更文件或目录的权限。

    >                表示覆盖原文件内容(文件的日期也会自动更新)。

    >>              表示追加内容(会另起一行,文件的日期也会自动更新)。

    mkdir        在工作目录下建立一个名子目录。

    curl            是利用URL规则在命令行下工作的文件传输工具,支持文件的上传和下载。

    histroy  查看历史命令

    二、Git的使用

    1.  git init

    初始化一个Git仓库,即把当前目录变成Git可管理的仓库(repository,版本库又名仓库)。

    2.  git add

    把文件添加到版本库,实际上就是把文件修改添加到暂存区(stage)。

    如:$ git add readme.txt

    3.  git commit

    把文件提交到版本库,实际上就是把暂存区的所有内容提交到当前分支(master)。

    如:$ git commit -m "wrote a readme file"

    -m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

    git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)。

    commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

    $ git add file1.txt

    $ git add file2.txt file3.txt

    $ git commit -m "add 3 files."

    注意:如果不用git add到暂存区,那就不会加入到commit中。

    4.  git status

    查看什么文件被改过了,时刻掌握仓库当前的状态。

    5.  git diff

    查看修改内容。

    如:$ git diff readme.txt

    6.  git log

    显示从最近到最远的提交日志。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:$ git log --pretty=oneline

    穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

    7.  git reflog

    查看命令历史。

    要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    8.  git reset

    版本回退。

    如:$ git reset --hard HEAD^

    在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

    如:$ git reset --hard 1094a

    1094a是版本号的前几位。版本号没必要写全,前几位就可以了,Git会自动去找。

    9.  git checkout -- file

    如:$ git checkout -- readme.txt

    git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commit或git add时的状态。

    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    注意:git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令。

    10.  git reset HEAD <file>

    把暂存区的修改撤销掉(unstage),重新放回工作区。git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

    11.  git rm

    从版本库中删除文件。git rm前,需要先手动删除文件($ rm test.txt);git rm之后还要git commit:

    提示:先手动删除文件,然后使用git rm <file>和git add<file>效果是一样的。

    如果删错了,用git checkout(如:$ git checkout -- test.txt) 把误删的文件恢复到最新版本。从来没有被添加到版本库就被删除的文件,是无法恢复的!

    12.       git push

    把当前分支master推送到远程

    如:git push ssh://john.ding@10.0.0.160:29418/platform/packages/apps/Music HEAD:refs/for/sprdroidq_trunk(同时推送到gerrit)

    ssh://john.ding@10.0.0.160:29418/platform/packages/apps/Music为远程库,HEAD:refs/for/sprdroidq_trunk为当前分支master

    问题记录:git push报错:missing Change-Id in commit message footer

    原因:

    情况一:本地刚下载的库,第一次提交会出现这种情况。

    情况二:其他提交没有change_id,因为gerrit要求每个提交都要有change_id。

    解决方法:https://www.cnblogs.com/zndxall/p/9603834.html

    三、REPO的使用

    1.  repo init -u <url> [OPTIONS]

    在当前目录下初始化repo,会在当前目录生生成一个.repo目录,像Git Project下的.git一样,-u指定url,可以加参数-m指定manifest文件,默认是default.xml,.repo/manifests保存manifest文件。.repo/projects下有所有的project的数据信息,repo是一系列git project的集合,每个git project下的.git目录中的refs等目录都是链接到.repo/manifests下的。

    如:repo init -u ssh://gitadmin@gitmirror.spreadtrum.com/platform/manifest.git b sprdroidq_trunk

    2.  repo sync [PROJECT1...PROJECTN]

    同步到最新版本库,默认同步所有仓库,可以指定project 。

    3.  repo status

    查看本地所有Project的修改,在每个修改的文件前有两个字符,第一个字符表示暂存区的状态。

    letter

    meaning

    description

    -

    no change

    same in HEAD and index

    A

    added

    not in HEAD, in index

    M

    modified

    in HEAD, modified in index

    D

    deleted

    in HEAD, not in index

    R

    renamed

    not in HEAD, path changed in index

    C

    copied

    not in HEAD, copied from another in index

    T

    mode changed

    same content in HEAD and index, mode changed

    U

    unmerged

    conflict between HEAD and index; resolution required

    每二个字符表示工作区的状态 

    letter

    meaning

    description

    -

    new/unknown

    not in index, in work tree

    m

    modified

    in index, in work tree, modified

    d

    deleted

    in index, not in work tree

    4.  repo manifest 

    查看清单文件

    5.  repo branch或repo branches

    查看所有分支

    6.  repo diff

    查看修改

    7.  repo version 

    查看repo版本号

    8.  repo prune <topic>

    删除已经merge的分支

    9.  repo abandon <topic>

    删除分支,无论是否merged

    10.  repo grep 

    在项目中进行内容查找

     

    三、其他

    AS导包快捷键alt+enter

  • 相关阅读:
    八、UIViewController们之间的协作——Segue
    七、UIViewController导航栏
    六、APP开发的主角——UIViewController
    五、UI开发之核心基础——约束(深入)
    四、UI开发之核心基础——约束(实用)
    三、UI开发之核心基础——约束(入门)
    iOS开发笔记错误集
    Unity中内嵌网页插件UniWebView使用总结
    利用Aspose.Word控件实现Word文档的操作
    ReSharper 配置及用法(ZHUANG)
  • 原文地址:https://www.cnblogs.com/pomodoro/p/11315163.html
Copyright © 2011-2022 走看看