git repo sync管理git打Tag之后如何获取新版本

repo+manifests+git方式管理安卓代码 - manifest-git-gerrit - ITkeyowrd
repo+manifests+git方式管理安卓代码
推荐:Creating topic branches $ repo start branchname
#建立自己的分枝 $ repo status
领取地址:
repo+manifests+git方式管理安卓代码
1.repo的获取
repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理git所管理的一个个仓库),可以简化android开发中git的使用。
先从谷歌那里获取源,下面脚本是一个样例脚本,将获取的repo和谷歌mirror源下的
#!/bin/bash
BIN=/root/bin
REPO=$BIN/repo
ANDROID_HOME=/home/androidmirror
if&[&!&-d&$BIN&];&then
&&&&mkdir&-p&$BIN
&&&&if&[&-f&$REPO&];&then&
&curl&https://storage.googleapis.com/git-repo-downloads/repo&&&$REPO
chmod&775&$REPO
if&[&!&-d&$ANDROID_HOME&];&then
&&&&mkdir&-p&$ANDROID_HOME;cd&$ANDROID_HOME
&&&&$REPO&init&-u&https://android.googlesource.com/mirror/manifest&--mirror
&&&&$REPO&sync
&&&cd&$ANDROID_HOME;$REPO&sync
if&&[&-d&$ANDROID_HOME&];&then
&&&&cp&$ANDROID_HOME/.repo/repo/repo&$ANDROID_HOME
&&&&sed&-i&-e&&s/https:\/\/gerrit.googlesource.com/git:\/\/mirror.core.archermind.com\/android\/aosp/&&$ANDROID_HOME/repo
cd&$ANDROID_HOME
rm&-rf&git-repo
git&clone&https://gerrit.googlesource.com/git-repo.git
cd&git-repo
git&checkout&-b&stable
调用的时候注意获取repo的路径,并加执行权限,repo里面的git-repo的URL要填写正确。
git-repo的分支,一定要和repo里填写的repo_rev是一致的。
http共享repo和git-repo
在/etc/httpd/httpd.conf最下面增加
&VirtualHost&*:80&
&&&&ServerAdmin&webmaster@dummy-host.example.com
&&&&DocumentRoot&/work/mirror
#&&&&ServerName&dummy-host.example.com
&&&&ErrorLog&logs/dummy-host.example.com-error_log
&&&&CustomLog&logs/dummy-host.example.com-access_log&common
&/VirtualHost&
修改/etc/httpd/conf.d下welcom.conf
注释掉所有内容,重启httpd服务即可
2.如何创建manifests.git文件
& & &在布置好repo以后,就要建立manifests.git,这个仓库是用来管理其他git仓库的,里面填写有Android代码的路径,方便我们批量下载git库。
&&&以android源码Asus为例,首先我们需要客户提供project.list,根据project.list创建对应的manifests.xml。
&检查project.list是否含有空的路径,脚本如下
source_path=$1
branch_name=LA.BF.1.1.2_rb1.21
function&create_git()&{
&&&&git_path=$1
&&&&if&[&!&-d&&$source_path/$git_path&&];&then
&&&&&&&&mkdir&-p&$source_path/$git_path
&&&&&&&&echo&&README&&&&$source_path/$git_path/README
&&&&&&&&echo&&---------:&$source_path/$git_path&:&no&this&file&&&&&$source_path/gitstatus.log
&&&&number=`ls&$source_path/$git_path&|&wc&-l`
&&&&if&[&$number&==&0&];&then
&&&&&&&&echo&&---------:&$source_path/$git_path&:&no&child&file&&&&&$source_path/gitstatus.log
&&&&&&&&echo&&README&&&&$source_path/$git_path/README
&&&&cd&$source_path/$git_path
&&&&&&&&git&init&.
&&&&&&&&git&add&*&-f
&&&&&&&&git&commit&-m&&Add&the&all&files&
&&&&git&status&|&awk&-F&&\t&&'{print&$2}'&|&xargs&git&add&-f
&&&&git&commit&-m&&Add&the&ignore&files&
&&&&git&checkout&-b&$branch_name
&&&&echo&$git_path&&&&$source_path/gitstatus.log
&&&&git&status&&&&$source_path/gitstatus.log
echo&&-------Begin------------------------------&&
rm&-rf&$source_path/gitstatus.log
GIT_PROJECTS=`cat&$source_path/project.list&|&xargs`
for&git_project&in&${GIT_PROJECTS}
&&&&echo&${git_project}
&&&&create_git&${git_project}
echo&&-------End------------------------------&&
source_path=/work/gerrit/review_site/git/asus
function&create_git()&{
&&&&&&&&git_path=$1
&&&&&&&&number=`ls&$source_path/$git_path&|&wc&-l`
&&&&&&&&if&[&$number&-eq&&0&&]
&&&&&&&&then
&&&&&&&&&&&&&&&&&&echo&$git_path&&&&new.list
&&&&&&&&fi
echo&&-------------------------------------&&
#&echo&&&&&&&&&&&&&&&&&&&&&make&the&mirror&dir&----&
#&mkdir&-p&${mirror_source}
#&echo&&&&&&&&&&&&&&&&&&&&&cp&the&project.list&to&mirror&dir&----&
#&cp&${src_source}/.repo/project.list&${mirror_source}/
GIT_PROJECTS=`cat&project.list&|&xargs`
for&git_project&in&${GIT_PROJECTS}
&&&&&&&&echo&${git_project}
&&&&&&&&create_git&${git_project}
echo&&-------------------------------------
&manifests.xml的制作脚本样例如下:
REMOTE_FETCH=&ssh://192.168.100.198:29418/&
REMOTE_REVIEW=&http://192.168.100.198&
PROJECT_NAME=&asus/project&
BRANCH=&LA.BF.1.1.2_rb1.21&
echo&&&?xml&version=\&1.0\&&encoding=\&UTF-8\&?&&&&&manifest.xml
echo&&&manifest&&&&&&manifest.xml
echo&&&&&remote&fetch=\&${REMOTE_FETCH}\&&name=\&origin\&&review=\&${REMOTE_REVIEW}\&/&&&&&&manifest.xml
echo&&&&&default&remote=\&origin\&&revision=\&${BRANCH}\&/&&&&&&manifest.xml
echo&&&&&&&manifest.xml
GIT_PROJECTS=`cat&project.list&|&xargs`
function&create_project&()&{
git_path=$1
if&[&${git_path}&==&&build&&]
echo&&&&&project&name=\&${PROJECT_NAME}/${git_path}\&&path=\&${git_path}\&&&&&&&&manifest.xml
&&&&&&&&echo&&&&&&&&&copyfile&dest=\&Makefile\&&src=\&core/root.mk\&/&&&&&&manifest.xml
&&&&&&&&echo&&&&&/project&&&&&&manifest.xml
elif&[&${git_path}&==&&vendor/intel/support&&]
echo&&&&&project&name=\&${PROJECT_NAME}/${git_path}\&&path=\&${git_path}\&&&&&&&&manifest.xml
&&&&&&&&echo&&&&&&&&&copyfile&dest=\&device/intel/Android.mk\&&src=\&x86_only_Android.mk\&/&&&&&&manifest.xml
echo&&&&&&&&&copyfile&dest=\&platform/vendor/intel/Android.mk\&&src=\&x86_only_Android.mk\&/&&&&&&manifest.xml
echo&&&&&/project&&&&&&manifest.xml
echo&&&&&project&name=\&${PROJECT_NAME}/${git_path}\&&path=\&${git_path}\&&/&&&&&&manifest.xml
for&git_project&in&${GIT_PROJECTS}
&&&&create_project&${git_project}
echo&&&&&&&manifest.xml
echo&&&/manifest&&&&&&manifest.xml
#&cat&manifest.xml&|&awk&-F&path=\&&'{print&$2}'&|&awk&-F&\&\&remote=&'{print&$1}'&|&awk&-F&\&\&revision=&'{print&$1}'&&&project.list
创建好manifests.xml文件后
mkdir&manifests
mv&manifests.xml&manifests
cd&manifests
mv&manifests&default.xml
git&add&default.xml
git&commit&-m&“test”&default.xml
git&clone&manifests/.git&--mirror
就可以看到manifests.git文件了&&&
3.如何批量创建镜像
样例脚本如下:
src_source=$1
mirror_source=$2
dev_branch=&LA.BF.1.1.2_rb1.21&
function&create_git()&{
git_path=$1
if&[&-d&&$src_source/$git_path&&]
cd&$src_source/$git_path/
&&&&&&&&git&init&
&&&&&&&&git&add&*
&&&&&&&&git&commit&-m&“test”&*
git&checkout&-b&${dev_branch}
base_path=`basename&$git_path`
echo&$base_path
git&clone&$base_path/.git&--mirror
mkdir&-p&$mirror_source/$git_path
&&&&mv&$base_path.git&$mirror_source/$git_path/../
rm&-r&$mirror_source/$git_path
echo&&&&&&&&&&&&&&&&&&&&&prepare&---------------------------------------&&
#&echo&&&&&&&&&&&&&&&&&&&&&make&the&mirror&dir&----&
#&mkdir&-p&${mirror_source}
#&echo&&&&&&&&&&&&&&&&&&&&&cp&the&project.list&to&mirror&dir&----&
#&cp&${src_source}/.repo/project.list&${mirror_source}/
cd&${mirror_source}
GIT_PROJECTS=`cat&${mirror_source}/project.list&|&xargs`
echo&${GIT_PROJECTS}
for&git_project&in&${GIT_PROJECTS}
echo&${git_project}
create_git&${git_project}
echo&&&&&&&&&&&&&&&&&&&&&Over!&Please&check&and&restart&the&gerrit-server&------------&
4.gerrit网页上的权限文件如何修改
先创建新的组,加入项目组对应的成员,read_XXX,push_XXX,review_XXX
添加对应成员
开始加项目组对应分支的权限,
在projects-&All-projects中添加,
这是直接往主线合入,读取,审核等权限
通过继承的方式,
Asus项目下git库比较多,如果一个个单独设置权限比较麻烦,这里可以先创建一个新的工程作为一个father&project,
Father样例工程如下,refs/for/*即是分支的权限,refs/heads/*是主线的权限
Asus下的其他项目如果要设置权限,直接采用继承的形式即可
5.如何从gerrit服务器上拉取代码
登录其他服务器后,首先我们要将ssh的密钥传到网站上去。
ssh-keygen&-t&rsa
cat&~/.ssh/id_rsa.pub,
拷贝密钥,到网站下
&推荐:转载一则: Git命令快速参考 Git Command Quick Reference 本附录为Git常见命令快速参考。每节介绍一种操作类型。 这里会列出很多命令,而相应的解释却不多。对
拷贝完以后增加config文件,vi&~/.ssh/config
Host&192.168.100.198
user&n006253
下载git服务,我的git版本是git&1.7.9.6
rpm&-ivh&git-1.7.9.6-1.el6.rfx.x86_64.rpm&perl-Git-1.7.9.6-1.el6.rfx.x86_64.rpm
rpm&-ivh&git-daemon-1.7.9.6-1.el6.rfx.x86_64.rpm
将以下内容,传到/etc/xinetd.d/git
#&default:&off
#&description:&The&git&daemon&allows&git&repositories&to&be&exported&using&#&&&&&&&the&git://&protocol.
&&&&&&&&#server_args&&&&&=&--base-path=/var/lib/git&--export-all&--user-path=public_git&--syslog&--inetd&--verbose
&&&&&&&&#type&&&&&&&&&&&&=&UNLISTED
service&git
&&&&&&&&disable&&&&&&&&&=&no&
&&&&&&&&#&git&is&in&/etc/services&only&on&RHEL5+
&&&&&&&&type&&&&&&&&&&&&=&UNLISTED
&&&&&&&&port&&&&&&&&&&&&=&9418
&&&&&&&&socket_type&&&&&=&stream
&&&&&&&&wait&&&&&&&&&&&&=&no
&&&&&&&&user&&&&&&&&&&&&=&nobody
&&&&&&&&server&&&&&&&&&&=&/usr/libexec/git-core/git-daemon
&&&&&&&&server_args&&&&&=&--base-path=/work/mirror&--export-all&--user-path=/work/mirror/android&--syslog&--inetd&--verbose
&&&&&&&&log_on_failure&&+=&USERID
&&&&&&&&#&xinetd&does&not&enable&IPv6&by&default
&&&&&&&&#&flags&&&&&&&&&&&=&IPv6
/etc/init.d/xinetd&restart
cd&/work/tool
curl&http://mirror.core.archermind.com/android/aosp/repo&&repo
chmod&+x&repo
repo&init&-u&ssh://n.168.100.198:29418/kraft2-m/8939/manifests&-b&trunk_LA2.15_8939
下下来以后&/work/tool/repo&sync&-j8
6.修改上传代码
以修改库配置文件manifests.git为例
vi&default.xml
修改好以后
git&commit&-m&“test”&default.xml
git&push&origin&HEAD:refs/for/trunk****
Push的时候如果出现missing&change&ID,按照报错的提示传输第一下ID即可
上传好以后到网页上submit提交的内容,在ALL-&OPEN下
如果想要直接合入主线则是git&push&origin&HEAD:refs/heads/trunk****
如果出现user或者邮箱名字不对的情况,输入
git&config&--global&user.name&&Your&Name&
git&config&--global&user.email&&
git commit --amend --author 'fengxinfeng &Xinfeng.&'
本文出自 “” 博客,谢绝转载!
推荐:To work with the Android code, you will need to use both Git and Repo. In most situations, you can use Git instead of Repo, or mix Repo and Git comman
repo+manifests+git方式管理安卓代码 1.repo的获取 repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理git所管理的一个个
相关阅读排行
相关内容推荐
请激活账号
为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。
您的注册邮箱:
如果您没有收到激活邮件,请注意检查垃圾箱。博客访问: 225769
博文数量: 79
博客积分: 0
博客等级: 民兵
技术积分: 940
注册时间:
发布时间: 19:58:22
一、linux打补丁方法1、处理单个文件补丁的方法:# 产生补丁diff -uN from-file to-file &to-file.patch# 打补丁patch -p0 & to-file.patch# 取消补丁patch -RE -p0 & to-file.patch2、对整个文件夹打补丁的情况:# 产生补丁diff -uNr &from-docu &to-docu &&to-docu.patch# 打补丁cd to-docu.........
阅读(16650) | 评论(1) | 转发(4)
发布时间: 19:11:17
git打tag方法,repo forall同时为多个git库打tag;repo tag管理android源码分支;......
阅读(213) | 评论(0) | 转发(0)
发布时间: 17:12:05
repo管理git打Tag之后如何获取新版本代码......
阅读(2925) | 评论(0) | 转发(0)
发布时间: 17:50:22
git push错误: error: RPC result=22, HTTP code = 411......
阅读(1605) | 评论(0) | 转发(0)
发布时间: 10:26:59
Repo manifest xml格式......
阅读(1896) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
请登录后留言。没有更多推荐了,
不良信息举报
举报内容:
Repo和Git 版本管理常用命令总结
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!如何使用git获取指定tag的代码_百度知道
如何使用git获取指定tag的代码
我有更好的答案
进入工程的.repo/manifests git库。ls –l tagname 如果发现有tagname文件,执行如下下载命令:命令格式:repo init –u
remoutepaht
–b branch
tagname例子:repo init -u ssh://gitserver –m tagname
--no-repo-verify --repo-branch=stablec) ls –l tagname 如果未发现有tagname文件,执行git tag –l | grep tagname,如果找到tagname,执行如下下载命令。git checkout tagname default.xmlrepo sync
为您推荐:
其他类似问题
git的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Repo和Git 版本管理常用命令 - git - ITkeyowrd
Repo和Git 版本管理常用命令
推荐:概述 git 作为我们常用的版本管理工具,提供了丰富的命令操作,这里记录一下开发中我们常用的命令及使用技巧,以备不时之需。 基础命令 config 配置命令 ,安装完g
领取地址:
From: http://zyueqi.iteye.com/blog/1461466 Git命令快速参考 Git Command Quick Reference 本附录为Git常见命令快速参考。每节介绍一种操作类型。 这里会列出很多命令,而相应的解释却不多。对于还不熟悉Git的读者,可回头翻阅第1章“Git的版本控制之道”(第3页)。 A.1安装和初始化 Setup and Initialization 在使用Git之前,须要先进行配置。在使用一个新的版本库之前,须要先初始化。本节介绍与Git设置和初始化相关的命令。 配置全局用户名和电子邮件地址 prompt& git config --global user.name &Your Name& prompt& git config --global user.email && 为特定的版本库配置用户名和电子邮件地址 注意:你可以为每个版本库单独设置用户名和邮件地址。这使得用户可在不同项目中使用不同的用户名和/或不同的邮件地址。 prompt& cd /path/to/repo prompt& git config user.name &Your Name& prompt& git config user.email
在命令行中使用不同颜色显示不同内容 prompt& git config --global color.ui &auto& 初始化新版本库 prompt& mkdir /path/to/repo: prompt& cd /path/to/repo prompt& git init Initialized empty Git repository in /path/to/repo/.git/ prompt& ... create file(s) for first commit ... prompt& git addprompt& git commit -m 'initial import' Created initial commit bdebe5c: initial import.1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 &some file& 克隆版本库 prompt& git clone &repository url Initialize repo/.git Initialized empty Git repository in /work/&remote repository&/.git/ 将目录中的内容纳入Git版本控制 prompt& cd /path/to/existing/directory prompt& git init Initialized empty Git repository in /path/to/existing/directory/.git prompt& git add . prompt& git commit -m &initial import of some project& 在本地版本库中设置远程版本库的别名 ... from within the repository directory ... prompt& git remote add &remote repository& &repository url& A.2 日常操作 Normal Usage 本节列出Git日常操作命令,对应于第4章“添加与提交:Git基础”(第41页)。 添加新文件或暂存已有文件上的改动,然后提交 prompt& git add &some file& prompt& git commit -m &&some message&& 暂存已有文件上的部分修改 注意:[...]表示可选参数。 prompt& git add -p [&some file& [&some file& [and so on]]]&选择要提交的文本块…… 使用交互方式添加文件 prompt& git add -i 暂存已纳入Git版本控制之下的文件的修改 prompt& git add -u [&some path& [&some path&]] 提交已纳入Git版本控制之下的文件的所有修改# s& prompt& git commit -m &&some message&& -a;清除工作目录树中的修改 prompt& git checkout HEAD &some file& [&some file&] 取消已暂存但尚未提交的修改的暂存标识 prompt& git reset HEAD &some file& [&some file&] 修复上一次提交中的问题 改动相关文件,并暂存…… prompt& git commit -m &&some message&& --amend 修复上一次提交中的问题,并复用上次的提交注释 prompt& git commit -C HEAD --amend A.3 分支 Branches 分支是Git的强项之一。本节介绍关于分支的各个命令。详细内容见第5章“理解和使用分支”(第55页)。 列出本地分支 prompt& git branch 列出远程分支 prompt& git branch -r 列出所有分支 prompt& git branch -a 基于当前分支(的末梢)创建新分支 prompt& git branch &new branch& 检出另一条分支 prompt& git checkout &some branch& 基于当前分支创建新分支,同时检出该分支 prompt& git checkout -b &new branch 基于另一个起点,创建新分支 你可以从版本库中的任何一个版本开始创建新分支。这个起始点可以用一条已有的分支名称、一个提交名称,或者一个标签名称来表 prompt& git branch &new branch& &start point& 创建同名新分支,覆盖已有分支 prompt& git branch -f &some existing branch& [&start point&] 移动或重命名分支 只有当&new branch&不存在时 prompt& git checkout -m &existing branch name& &new branch name& 如果&new branch&已存在,就覆盖它 prompt& git checkout -M &existing branch name& &new branch name& 把另一条分支合并到当前分支 prompt& git merge &some branch& 合并,但不提交 prompt& git merge --no-commit &some branch& 拣选合并,并且提交 prompt& git cherry-pick &commit name& 拣选合并,但不提交 prompt& git cherry-pick -n &commit name& 把一条分支上的内容压合到另一条分支(上的一个提交) prompt& git merge --squash &some branch& 删除分支 仅当欲删除的分支已合并到当前分支时 prompt& git branch -d &branch to delete& 不论欲删除的分支是否已合并到当前分支 prompt& git branch -D &branch to delete& A.4 历史 History 这些命令用来显示版本库的历史信息,包括代码曾在哪里、谁在何时做了什么、修改的内容及其统计信息。详见第6章“查询Git历史记录”(第71页)。 显示全部历史记录 prompt& git log 显示版本历史,以及版本间的内容差异 prompt& git log -p 只显示最近一个提交 prompt& git log -1 显示最近的20个提交,以及版本间的内容差异 prompt& git log -20 -p 显示最近6小时的提交 prompt& git log --since=&6 hours& 显示两天之前的提交 prompt& git log --before=&2 days& 显示比HEAD(当前检出分支的末梢)早3个提交的那个提交 prompt& git log -1 HEAD 或者…… prompt& git log -1 HEAD 或者…… prompt& git log -1 HEAD 显示两个版本之间的提交 下面命令中的&start point&和&end point&可以是一个提交名称、分支名称、标签名称,或者它们的混合。 prompt& git log &start point&...&end point& 显示历史,每个提交显示一行,包括提交注释的第一行 prompt& git log --pretty=oneline 显示改动行数统计 prompt& git log --stat 显示改动文件的名称和状态 prompt& git log --name-status 显示当前工作目录树和暂存区间的差别 prompt& git diff 显示暂存区和版本库间的差别 prompt& git diff --cached 显示工作目录树和版本库间的差别 prompt& git diff HEAD 显示工作目录树与版本库中某次提交版本之间的差别 &start point&可以是一个提交名称、分支名称或标签名称。 prompt& git diff &start point& 显示版本库中两个版本之间的差别 prompt& git diff &start point& &end point& 显示差别的相关统计 prompt& git diff --stat &start point& [&end point&] 显示文件中各个部分的修改者及相关提交信息 prompt& git blame &some file& 显示文件中各个部分的修改者及相关提交信息,包括在该文件中复制、粘贴和移动内容等方面的情况。 prompt& git blame -M &some file& 显示文件中各部分的修改者及相关提交信息,包括在文件间移动内容方面的情况 prompt& git blame -C -C &some file& 显示历史时,显示复制和粘贴信息 prompt& git log -C -C -p -1 &some point& A.5 远程版本库 Remote Repositories 开发人员之间通过远程版本库来共享工作成果,相互协作。本节介绍关于这些操作的命令,详见第7章“与远程版本库协作”(第91页)。 克隆远程版本库 prompt& git clone &some repository& 克隆远程版本库,但只下载其中最近200个提交的历史记录 prompt& git clone --depth 200 &some repository& 在本地版本库中设置远程版本库的别名 prompt& git remote add &remote repository& &repository url& 显示远程分支 prompt& git branch -r 基于远程分支创建本地分支 prompt& git branch &new branch& &remote branch& 基于远程标签创建本地分支 prompt& git branch &new branch& &remote tag& 从别名为“origin”的远程版本库中取来修改变化,但不合并到本地分支 prompt& git fetch 从任意的远程版本库中取来修改变化,但不合并到本地分支 prompt& git fetch &remote repository& 从任意的远程版本库中取来修改变化,并合并到当前检出的本地分支 prompt& git pull &remote repository& 从别名为“origin”的远程版本库中取来修改变化,并合并到当前检出的本地分支 prompt& git pull 把修改变化从本地分支推入远程版本库 prompt& git push &remote repository& &local branch&:&remote branch& 把修改变化从本地分支推入远程版本库中同名分支 prompt& git push &remote repository& &local branch& 把修改变化从本地新建分支推入远程版本库 prompt& git push &remote repository& &local branch& 把修改变化推入别名为“origin”的远程版本库 当远程版本库中已有同名分支时,这个命令会推入本地分支到远程版本库对应的分支中。如果远程版本库中尚无同名分支,则须使用git push &repository name& &local branch&。 prompt& git push 在远程版本库中删除分支 prompt& git push &remote repository& :&remote branch& 在本地版本库中删除所有远程版本库中已不存在的分支 prompt& git remote prune &remote repository& 在本地版本库中删除某个远程版本库的简称,以及该远程版本库相关的分支 prompt& git remote rm &remote repository& A.6 连接Git和SVN Git to SVN Bridge Git可以读取Subversion版本库中的数据,并把本地修改发送回Subversion版本库。这是Git区别于其他版本控制工具的必杀技之一。相关详细介绍请参见第10章“迁移到Git”(第131页)。 克隆SVN版本库的全部内容 prompt& git svn clone &svn repository& 克隆具有标准结构的SVN版本库 下面命令适用于克隆标准结构的SVN数据库,也就是说,主干命名为trunk,其他分支都存放于branches目录下,标签都存放于tags目录下。 prompt& git svn clone -s &svn repository& 克隆非标准结构的SVN版本库 prompt& git svn clone -T &trunk path& \ 2 ]! W9 t7 X4 N) D; H# n( g4 I/ H -b &branch path& \ + q- e& |5 k& n$ C1 }1 e -t &tag path& \ 7 v. |9 `& `9 g, _* a & svn repository& 克隆具有标准结构的SVN版本库中的某个版本(比如第2321版) prompt& git svn clone -s -r 2321 克隆具有标准结构的SVN版本库,并对SVN中的分支添加前缀 prompt& git svn clone -s --prefix svn/ &svn repository& 从上游SVN版本库中获得更新的内容,并依此在本地Git版本库中变基本地分支 prompt& git svn rebase 把修改变化推回上游SVN版本库 prompt& git svn dcommit 列出所有将推入上游SVN版本库的提交 prompt& git svn dcommit -n 显示SVN历史记录 prompt& git svn log 显示文件中各个部分的SVN的修改者及相关提交信息 prompt& git svn blame &some file&转载二则: 1. 服务器版本下载: repo init -u git@192.168.1.11:i700t_/platform/manifest.git -b froyo_almond -m M76XXTSNCJNLYA.xml repo sync repo forall -c git checkout --track origin/i700t_ -b [你的本地分支] 或者: git clone git@192.168.1.11:6120_gingerbread/Arm9-6120.git git checkout --track origin/arm9_6120 -b [你的本地分支名]2. 服务器新加仓库同步: 请按如下步骤取得Lanucher_wpon的代码: 1:~& cd I700T/.repo/manifest 2: I700T/.repo/manifest& git pull --rebase 3: I700T/.repo/manifest& cd ../.. 4: I700T& repo sync platform/packages/apps/Launcher_wpon 5:I700T& cd packages/apps/Launcher_wpon 6:I700T/packages/apps/Launcher_wpon&7:git checkout --track origin/froyo_almond -b [你的本地分支]3. 上传本地修改到服务器 repo forall -c git pull --rebase和服务器同步(要上传代码前,一般先进行此操作) git add .或git add 文件名添加当前仓库修改的文件 git commit -m &...&在引号中添加你的修改记录 git push origin本地分支名:froyo_almond上传本地修改的代码4. 设置一些默认的全局变量,对所有工程代码有效 git config --global user.name yourmail git config --global user.email yourmail git config --global push.default tracking这样后续git push 后面不用带参数5.查看修改记录 git log本地仓库修改记录 repo forall -c git log --since=&& --until=&&按条件查看工程所有仓库修改记录 repo status查看工程中所有仓库的修改状态(包括文件位置) git status查看仓库修改状态6. 分支相关 git branch查看本地branch git branch -r查看远程branch git branch -a查看所有branch git branch -D(-d)(branch name)删除branch cat .git/config可以查看本地branch一些信息7. 修改恢复相关 git checkout filename1filename2...取消本地修改,和服务器同步 git stashgit stash apply先stash本地修改,然后执行git pull --rebase同步,最后再APPLY恢复自己的修改 git reset --soft head_commit恢复到最后一次commit,保持代码修改 git reset --hard commit恢复到指定一次commit,放弃之前所有修改 #回退a.py这个文件的版本到上一个版本git reset HEAD^ a.pygit reset commitNO filename8. 本地某仓库出问题了,不好闹腾时,删除之,并重新同步跟踪 project_folder/vendor/qcom$ rm -rf proprietary/进到相应目录,删除之 project_folde$ repo sync platform/vendor/qcom/proprietary重新repo sync,后面路径名称可查看:gedit .repo/manifest.xml git branch -a----列举所有BRANCH git branch -D 700_arm11_server git branch -D 700_arm11_server_wifi--删掉所有本地branch git checkout --track origin/froyo_almond -b 700_arm11_server然后track远程branch,重新创建本地分支9.tag的使用 git tag [tag_name] [version],在对应版本上(一般用change的SHA1),创建taggit tag -l 列出当前taggit tag -d [tag_name] 删除tag有了tag以后,可以使用git checkout [tag_name] -b [branch_name]来检出对应tag时刻的代码。也可以用tag name来实现diff等功能。10. patch的使用 git diff filename1 filename2 ...修改位置对比,查看源码 git diff & xxx.patch将修改的地方打成一个patch git apply xxx.patch将patch打上11. 后续有用到的命令继续添加 git revert 是撤销某次提交。git reset –hard,才是退回到以前的版本 git reset --soft commitNum保存代码修改的reset,但这个时候无法使用git diff 进行比较修改的文件,必须: git reset filename filename这样就可以git diff查看 git diff ffd98b291e0caa6c5eae661ce40c9 b8e7b00c02b95b320f14b625663fdecf2d63e74c 查看某两个版本之间的差异 git diff ffd98b291e0caa6c5eae661ce40c9:filename b8e7b00c02b95b320f14b625663fdecf2d63e74c:filename 查看某两个版本的某个文件之间的差异Git 命令别名 $ git config –global alias.co checkout // co将会成为checkout的别名 $ git config –global alias.br branch $ git config –global alias.ci commit $ git config –global alias.st status $ git config –global user.name “username” $ git config –global user.email 转载三则: 下载 repo 的地址: http://android.git.kernel.org/repo ,可以用 wgethttp://android.git.kernel.org/repo 或者 curl http://android.git.kernel.org/repo &~/bin/repo来下载 repo , chmod a+x ~/bin/repo用repo sync 在抓去 android source code 的时候,会经常出现一些错误导致 repo sync 中断,每次都要手动开始。 可以用如下的命令,来自动重复:$?=1;while [ $? -ne 0 ] ; do donerepo help [ command ] , 显示command 的详细的帮助信息内容 repo init -u URL ,在当前目录安装 repository ,会在当前目录创建一个目录 &.repo&-u 参数指定一个URL, 从这个URL 中取得repository 的 manifest 文件。repo init -u git://android.git.kernel.org/platform/manifest.git可以用 -m 参数来选择 repository 中的某一个特定的 manifest 文件,如果不具体指定,那么表示为默认的 namifest 文件 (default.xml)repo init -u git://android.git.kernel.org/platform/manifest.git -m dalvik-plus.xml可以用 -b 参数来指定某个manifest 分支。repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0可以用命令: repo help init 来获取 repo init 的其他用法4. repo sync [project-list]下载最新本地工作文件,更新成功,这本地文件和repository 中的代码是一样的。 可以指定需要更新的project , 如果不指定任何参数,会同步整个所有的项目。如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。 如果不是第一次运行 repo sync , 则相当于git rebase origin/branch .repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行gitrebase --continue5. repo update[ project-list ]上传修改的代码 ,如果你本地的代码有所修改,那么在运行 repo sync 的时候,会提示你上传修改的代码,所有修改的代码分支会上传到 Gerrit (基于web 的代码review 系统), Gerrit 受到上传的代码,会转换为一个个变更,从而可以让人们来review 修改的代码。6. repo diff [ project-list ]显示提交的代码和当前工作目录代码之间的差异。7. repo downloadtarget revision下载特定的修改版本到本地, 例如:repo download pltform/frameworks/base 1241 下载修改版本为 1241 的代码8. repo start newbranchname创建新的branch分支。 &.& 代表当前工作的branch 分支。9.repo prune [project list]删除已经merge 的 project10. repo foreach [ project-lists] -c command对每一个 project 运行 command 命令11. repo status显示 project 的状态
推荐:Git上传代码命令: $ git status
//本地客户端 $ git config --global user.email && $ git commit -a -m &fix flow polling driver bugs& $ g
From: http://zyueqi.iteye.com/blog/1461466 Git命令快速参考 Git Command Quick Reference 本附录为Git常见命令快速参考。每节介绍一种操作类型。 这里会列出很多命令,而相应的解释却不多。
相关阅读排行
相关内容推荐
请激活账号
为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。
您的注册邮箱:
如果您没有收到激活邮件,请注意检查垃圾箱。

我要回帖

更多关于 download git repo 的文章

 

随机推荐