一、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

Git与Repo 的使用的更多相关文章

  1. Git与Repo入门(转载)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAykAAADuCAIAAACyDd+sAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu ...

  2. 【转】Android源码学习(2)使用Git和Repo进行版本管理

    原文网址:http://blog.chinaunix.net/uid-26074270-id-2458828.html Android项目采用Git和Repo进行版本管理.在大多数情况下,Git都可以 ...

  3. 【转】Git与Repo入门----不错

    原文网址:http://www.cnblogs.com/angeldevil/p/3238470.html Git与Repo入门   版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工 ...

  4. How to get started with GIT and work with GIT Remote Repo

    https://www.ntu.edu.sg/home/ehchua/programming/howto/Git_HowTo.html#zz-7. 1.  Introduction GIT is a ...

  5. Git 和 Repo常用命令

    这篇博客总结的也不错: git常用及进阶命令总结 Git与Repo入门 一.初始環境配置 git config --global user.name "John Doe"git c ...

  6. Git Gerrit Repo User Manual

                      Git Repo Gerrit User Manual Revision History   Revision # Description Date Author ...

  7. Git和Repo管理使用简要介绍

    在Linux平台下进行Android系统项目开发时,需要Git或repo管理. 一. Git和Repo的区别: 1. Git:Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的 ...

  8. Git和Repo管理使用

    Git和Repo管理使用简要介绍 http://blog.csdn.net/stevenhu_223/article/details/8828130 多仓库代码管理器Repo的安装,使用以及服务器搭建 ...

  9. Git与Repo入门

    版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文 ...

  10. Free git private repo

    今天在网上搜索了一下,发现除了github之外还有很多免费的git server,列表可以见 https://git.wiki.kernel.org/index.php/GitHosting 对比了一 ...

随机推荐

  1. mybatis报错,There is no getter for property named 'templateName' in 'class

    There is no getter for property named 'templateName' in 'class 主要原因是因为mapper.xml 的语句有错误,导致在bean里找不到相 ...

  2. 【4】Zookeeper数据模型

    一.Znode节点是什么 1.1.概念   Znode节点是Zookeeper中数据模型中最小的数据单元.Zookeeper的数据模型是一颗树,由"/"进行分割路径.每个znode ...

  3. dart 函数练习

    import 'dart:convert'; import 'dart:html'; void main() { _getIPAddress() { final url = 'https://http ...

  4. Java数据结构浅析

    程序 = 数据结构 + 算法 本文概述Java中常用的数据结构,并简述其使用场景 1. 数据结构的定义 数据结构是一种逻辑意义,指的是逻辑上的数据组织方式及相应的处理,与数据在磁盘的具体存储方式不完全 ...

  5. Delphi GetCommModemStatus函数

  6. 【转】__cplusplus的含义

    有点代码中会看到以下形式的代码: #ifdef __cplusplus extern "C" {#endif #ifdef __cplusplus}#endif 这些代码是什么意思 ...

  7. 第1章 python入门

    1.1 python的出生与应用   python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开 ...

  8. phpMyAdmin出现Fatal error: Maximum execution time of 300 seconds

    在mysql用phpMyAdmin导入大数据的时候出现:Fatal error: Maximum execution time of 300 seconds exceeded in D:/查了很多文章 ...

  9. 使用幕布时,在Session过期后,弹出框加载出登陆的HTML的问题

    思路:在登陆页面判断当前加载的Url是否时login/index ,如果不是跳转到登陆页 //设置或获取对象指定的文件名或路径. var Url = window.location.pathname; ...

  10. 【经典dp】hdu4622Reincarnation

    呕  卡64M内存卡了好久 题目描述 题目大意 给出一个字符串 S,每次询问一个区间的本质不同的子串个数.$|S| \le 2000$. 题目分析 首先无脑$n^2$个set开起来:MLE 稍微想想这 ...