初次使用git/repo

初次使用git/repo,将一些工作常用的命令记录下来,以供以后参考:

 The different between git and repo:

git 操作一般对应一个仓库,而repo操作对应一般于一个project,一个project会有若干个仓库组成。

在操作整个project时使用repo,而在操作其中某个库时使用git。

 

一. repo常用的命令

repo是google开发的一个python脚本(其中调用git命令)

repo可以通过官网下载http://android.git.kernel.org/repo

 

1.repo init

在当前目录创建一个repository,会在当前目录生成一个.repo目录

-u 指定一个URL,从这个URL中获取repository的manifest文件。

-m  指定manifest

-b 指定某个manifest分支

 

$repo init -u XXX -b XXX -m XXX

 

2.repo sync

同步所有文件,更新到最新

第一次运行,相当运行git clone,会把repository所有的内容copy到本地.

第二次运行,相当git remote update 

                      git rebase origin/branch 

                      repo sync 会更新 .repo 下面的文件

 

3. repo start --all XXX /repo abandon XXX

在文件夹下所有的git库都建立一个分支/

在文件夹下所有的git库删除一个分支

(若是使用该命令来创建分支,提交patch可以通过repo  upload命令)

 

二. git常用的命令 

1.创建一个本地分支

$git branch                     //查看本地所有分支,带*表示在该分支上

$git branch -a                  //查看所有分支,包括remote服务器分支

$git checkout XXbranch_name_in_serverXX -b XXbranch_nameXX 

 //将服务器上的XXbranch_name_in_serverXX分支checkout到本地XXbranch_nameXX分支上

(XXbranch_nameXX同时已被创建)

 

 

2.查看当前分支上所有的提交

$git log

 

3.删除一个本地分支(不能删除当前所在的分支)

$git branch -D X

可以通过$git branch查看是否被删除

 

4.切换本地分支

$git checkout X    //X为branch name

可以通过$git branch来查看当前所在分支

 

5.查看本地的修改

$git status

 

6.查看本地修改和本地服务器的不同

$git diff

 

7.commit本地修改的文件到本地服务器上

$git commit -s -a

 通过$git log看看是否已经将本地修改上传到本地的服务器上

$git commit --amend //修改commit信息

 

8.生成patch

$git format-patch HEAD^ //其中^的个数代表patch的个数

 

9.可以将分支切回到某个版本

$git reset --hard XXX //其中XXX为commit号

$git reset XXX//切回到XXX版本,本地保留修改

 

10.打patch

(1)If has 00XXX.patch file(这个是由git format-patch生成的patch)

$git am 00XX.patch //将本地代码修改,并commit,是否可以打上这个patch,通过$git log就可以看到有修改

$git apply XX.patch //将本地代码修改,没有commit,是否可以打上这个patch,通过$git status可以看到

 

If use "git am" has conflict,we can fix the conflict,method as follow:

$git apply --reject  00XXX.patch

可以先将没有conflict的文件先merge,剩下的conflict做了标记,并生成XXX.rej文件,

文件里是因为conflict无法合并的code片段.在这段代码查找冲突,并修改,XXX,rej参考完后,删除.

$git add .

$git am --resolved

 

(2)如果是别人提交的patch是在gerrit上,没有00XXX.patch文件

在gerrit上使用cherry-pick下的命令行

 

若有conflict,首先记下冲突版本号(部分即可)

$git status会显示哪个文件有conflict

$git diff有"<<<" "HEAD"标识的就是冲突的地方

解决冲突

$git add

$git commit -c 冲突版本号

要使用git push上传到gerrit,不能使用repo upload

 

About git push:

$vi .git/config

push = refs/heads/XXbranch_nameXX:refs/for/XXbranch_nameXX

 

11.更新该分支

$git  pull

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值