使用repo和git進行工程管理

以前一直用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 [email protected]:/pub/git/vmworks/xxxHEAD:develop


g、git push太複雜,有一個簡單一點的方法:

在repo start  指令後使用:

repo forall -c 'git remote add origin [email protected]:/pub/git/vmworks/$REPO_PROJECT.git$@'

如果在某個庫中逐一添加遠端,使用命令:

git remote add origin [email protected]:/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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章