使用repo和git进行工程管理
2013-05-09 18:11
239 查看
以前一直用cvs/svn,现在转用repo和git做工程管理,一直迷糊当中,今天请同事科普了一下,以下纯粹是从一个工程师简单使用的角度,配合自己的见解总结而成,可能很多地方不准确,甚至不正确,以后如有发现,我会自己再来更新,当然,欢迎指正。
repo是google用python写的用来管理git的脚本。
1、如何从服务器取一份代码到本地
a、repo init -u URL -b branch配置参数,指明具体服务器及分支
repo init 表示在当前目录下安装repository,会在当前目录创建一个.repo目录
-u URL 表示从这个URL(服务器地址)中取得repository的manifest文件
-b branch表示选择服务器的branch分支,没有-b这个参数,默认为master这个branch
关于branch的个人见解:git支持多分支管理,git对文件的管理具体体现就是文件夹下的一个.git目录,每个分支对应.git目录下的一个管理文件。
我们服务器上的用法是:repo init -u git://10.0.12.140/vmworks/platform/manifest.git -b develop
b、repo sync 从服务器取指定分支的代码,相当于git clone
2、建立本地分支
a、 repo start XXX(分支名) --all 建立本地分支。直观上,运行这条指令后才有了.git目录及目录下的管理文件,这样git命令才能使用。
b、使用git branch查看本地新建分支。可以使用git branch -r 查看远端服务器分支,或用git branch -a查看所有分支。
3、代码提交步骤(当本地代码和服务器代码没有冲突时)
a、使用repo status,查看具体哪个git库(project)需要提交。也就是列出需要提交代码所属.git目录的具体路径
b、cd 需要提交代码所属.git目录的具体路径。
c、git status列出了该.git目录管理的文件中,所有的修改。
d、git add +修改文件的文件 ,git add 后可接多个文件,中间只要用空格隔开就可以了。
e、git commit -m “对修改所做的注释” ,其中-m表示对代码做了修改,-a表示的是添加的文件。这个参数在使用repo status时,是会列出来的。
关于git add 和git commit的个人见解:做完这两部后,本地的.git目录下的branch文件已经做了修改
f、 git push 远端分支。
我们服务器上的用法是:git push xulei@10.0.12.140:/pub/git/vmworks/xxxHEAD:develop
g、git push太复杂,有一个简单一点的方法:
在repo start 指令后使用:
repo forall -c 'git remote add origin
xulei@10.0.12.140:/pub/git/vmworks/$REPO_PROJECT.git$@'
如果在某个库中逐一添加远端,使用命令:
git remote add origin
xulei@10.0.12.140:/pub/git/vmworks/common.git
这样 git push origin
4、代码提交步骤(当本地代码与服务器代码冲突时)
a、将本地代码更新到服务器最新代码
git checkout -f
git pull
b、在最新代码上做修改
c、回到以上第3步
6、/.repo/manifest.xml有各个git分支的信息
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="aosp"
fetch="git://10.0.12.140/vmworks/" />
<default revision="refs/heads/develop"
remote="aosp"
sync-j="4" />
<project path="build" name="build" >
<copyfile src="core/root.mk" dest="Makefile" />
</project>
<project path="prebuilts" name="prebuilts" />
<project path="kernel" name="common" />
<project path="external/busybox" name="external/busybox" />
<project path="external/yaffs2" name="external/yaffs2" />
<project path="external/glibc-2.17" name="external/glibc-2.17" />
<project path="external/glib-2.36.0" name="external/glib-2.36.0" />
<project path="external/utils" name="external/utils" />
<project path="external/softap" name="external/softap" />
<project path="external/qt-4.8.4" name="external/qt-4.8.4" />
<project path="projects/cardvr" name="projects/cardvr" />
<project path="projects/gst_demo" name="projects/gst_demo" />
<project path="projects/ipcamera" name="projects/ipcamera" />
<project path="projects/sofia" name="projects/sofia" />
<project path="projects/vmtool" name="projects/vmtool" />
<project path="platform/gstreamer/core" name="platform/gstreamer/core" />
<project path="platform/gstreamer/depends" name="platform/gstreamer/depends" />
<project path="platform/gstreamer/gstapi" name="platform/gstreamer/gstapi" />
<project path="platform/gstreamer/plugin_gst" name="platform/gstreamer/plugin_gst" />
<project path="platform/gstreamer/plugin_vmc" name="platform/gstreamer/plugin_vmc" />
<project path="platform/ipcamera/doc" name="platform/ipcamera/doc" />
<project path="platform/ipcamera/libs" name="platform/ipcamera/libs" />
<project path="platform/ipcamera/sdk" name="platform/ipcamera/sdk" />
<project path="platform/ipcamera/sofia" name="platform/ipcamera/sofia" />
<project path="platform/ipcamera/utils" name="platform/ipcamera/utils" />
<project path="platform/ipcamera/vimicro" name="platform/ipcamera/vimicro" />
<project path="platform/android" name="platform/android" />
<project path="platform/openmax/hantro_omx" name="platform/openmax/hantro_omx" />
<project path="platform/openmax/on2_omx" name="platform/openmax/on2_omx" />
<project path="platform/openmax/common" name="platform/openmax/common" />
</manifest>
repo是google用python写的用来管理git的脚本。
1、如何从服务器取一份代码到本地
a、repo init -u URL -b branch配置参数,指明具体服务器及分支
repo init 表示在当前目录下安装repository,会在当前目录创建一个.repo目录
-u URL 表示从这个URL(服务器地址)中取得repository的manifest文件
-b branch表示选择服务器的branch分支,没有-b这个参数,默认为master这个branch
关于branch的个人见解:git支持多分支管理,git对文件的管理具体体现就是文件夹下的一个.git目录,每个分支对应.git目录下的一个管理文件。
我们服务器上的用法是:repo init -u git://10.0.12.140/vmworks/platform/manifest.git -b develop
b、repo sync 从服务器取指定分支的代码,相当于git clone
2、建立本地分支
a、 repo start XXX(分支名) --all 建立本地分支。直观上,运行这条指令后才有了.git目录及目录下的管理文件,这样git命令才能使用。
b、使用git branch查看本地新建分支。可以使用git branch -r 查看远端服务器分支,或用git branch -a查看所有分支。
3、代码提交步骤(当本地代码和服务器代码没有冲突时)
a、使用repo status,查看具体哪个git库(project)需要提交。也就是列出需要提交代码所属.git目录的具体路径
b、cd 需要提交代码所属.git目录的具体路径。
c、git status列出了该.git目录管理的文件中,所有的修改。
d、git add +修改文件的文件 ,git add 后可接多个文件,中间只要用空格隔开就可以了。
e、git commit -m “对修改所做的注释” ,其中-m表示对代码做了修改,-a表示的是添加的文件。这个参数在使用repo status时,是会列出来的。
关于git add 和git commit的个人见解:做完这两部后,本地的.git目录下的branch文件已经做了修改
f、 git push 远端分支。
我们服务器上的用法是:git push xulei@10.0.12.140:/pub/git/vmworks/xxxHEAD:develop
g、git push太复杂,有一个简单一点的方法:
在repo start 指令后使用:
repo forall -c 'git remote add origin
xulei@10.0.12.140:/pub/git/vmworks/$REPO_PROJECT.git$@'
如果在某个库中逐一添加远端,使用命令:
git remote add origin
xulei@10.0.12.140:/pub/git/vmworks/common.git
这样 git push origin
4、代码提交步骤(当本地代码与服务器代码冲突时)
a、将本地代码更新到服务器最新代码
git checkout -f
git pull
b、在最新代码上做修改
c、回到以上第3步
5、git log用法
git log可以用来查看git的提交记录。git log -p(或者 git log --pathc)可以产看详细的提交内容能够。6、/.repo/manifest.xml有各个git分支的信息
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="aosp"
fetch="git://10.0.12.140/vmworks/" />
<default revision="refs/heads/develop"
remote="aosp"
sync-j="4" />
<project path="build" name="build" >
<copyfile src="core/root.mk" dest="Makefile" />
</project>
<project path="prebuilts" name="prebuilts" />
<project path="kernel" name="common" />
<project path="external/busybox" name="external/busybox" />
<project path="external/yaffs2" name="external/yaffs2" />
<project path="external/glibc-2.17" name="external/glibc-2.17" />
<project path="external/glib-2.36.0" name="external/glib-2.36.0" />
<project path="external/utils" name="external/utils" />
<project path="external/softap" name="external/softap" />
<project path="external/qt-4.8.4" name="external/qt-4.8.4" />
<project path="projects/cardvr" name="projects/cardvr" />
<project path="projects/gst_demo" name="projects/gst_demo" />
<project path="projects/ipcamera" name="projects/ipcamera" />
<project path="projects/sofia" name="projects/sofia" />
<project path="projects/vmtool" name="projects/vmtool" />
<project path="platform/gstreamer/core" name="platform/gstreamer/core" />
<project path="platform/gstreamer/depends" name="platform/gstreamer/depends" />
<project path="platform/gstreamer/gstapi" name="platform/gstreamer/gstapi" />
<project path="platform/gstreamer/plugin_gst" name="platform/gstreamer/plugin_gst" />
<project path="platform/gstreamer/plugin_vmc" name="platform/gstreamer/plugin_vmc" />
<project path="platform/ipcamera/doc" name="platform/ipcamera/doc" />
<project path="platform/ipcamera/libs" name="platform/ipcamera/libs" />
<project path="platform/ipcamera/sdk" name="platform/ipcamera/sdk" />
<project path="platform/ipcamera/sofia" name="platform/ipcamera/sofia" />
<project path="platform/ipcamera/utils" name="platform/ipcamera/utils" />
<project path="platform/ipcamera/vimicro" name="platform/ipcamera/vimicro" />
<project path="platform/android" name="platform/android" />
<project path="platform/openmax/hantro_omx" name="platform/openmax/hantro_omx" />
<project path="platform/openmax/on2_omx" name="platform/openmax/on2_omx" />
<project path="platform/openmax/common" name="platform/openmax/common" />
</manifest>
相关文章推荐
- ionic工程中使用git进行项目管理
- Android源码学习 使用Git和Repo进行版本管理
- 【转】Android源码学习(2)使用Git和Repo进行版本管理
- Android源码学习(2)使用Git和Repo进行版本管理
- git笔记之eclipse使用github远程仓库进行版本管理
- 完整教程--idea使用git进行项目管理
- 使用Git进行版本管理
- ios文件用git进行管理时,使用gitignore进行文件忽略
- 使用GIT进行源码管理
- eclipse使用git进行代码项目管理
- 使用Git进行代码管理的心得--github for windows
- idea使用git进行项目管理
- 使用Git进行产品代码管理的总结
- 接下来打算写一下visual stuido 2013使用git进行远端管理。
- Git和Repo管理使用简要介绍
- 如何使用SourceTree进行Git版本管理
- 使用Git进行小项目代码管理
- Android Studio 使用git进行代码管理
- 微信小程序使用gitee进行版本管理
- 软工实践练习一——使用Git进行代码管理心得