您的位置:首页 > 其它

使用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步

 

 

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>

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: