如何使用 Git 跟踪代码

Git 使得任何人意图开发或向 GNU Radio 贡献代码变得容易起来。本文将描述如何使用 Git 操作多个资源库,来开发和发布任何导致 GNU Radio 的变动。其目的是帮助大家管理 Git 库以便让 GNURadio 的代码更容易地被大家分享。

其基本观点是克隆 GNURadio 的 Git 库,然后使用 github 或其它 Git 服务器来维护你的已经关联公共库的工作。

  1. 克隆 GNU Radio 库 - Clone the repository
        $ git clone http://gnuradio.org/git/gnuradio.git
  2. 在公共 Git服务器诸如 http://www.github.org 上配置一个库。并以你的个人标志命名它比如:gnuradio-yourname。
  3. 使用明确、清晰并具含义的标识,这样 Git 便具有一个很好标识信息关联大家所作的工作。
        $ git config user.name "Your Name" 
    $ git config user.email your@email.abc
  4. 因为这还是一个现存的 Git 库,再运行如下的一些命令 (I called the project gnuradio-balister):
        $ cd gnuradio
    $ git remote add balister git@github.com:balister/gnuradio-balister.git
    $ git push balister master

现在你便有一个本地库和一个复制到 github 上的,好了,发布你的改动的条件便具备了。

更新 - Updates

更新你的公共库如下:

    $ git commit [options] [files] 
$ git push balister master

分支 - Branching

创建一个本地分支,发布新的工作。

  1. 创建一个新的分支
        $ git branch new_work
  2. 查看
        $ git checkout new_work
  3. 做些工作。
        $ git push balister new_work

删除分支 - Deleting Branches

当分支的任务完结就地删除,(如果必要的话)也将远程服务器上的删除:

删除本地:

    $ git branch -d new_work

删除服务器上的分支:

    $ git push balister :new_work

远程分支 - Remote Branches                

如果想使用本地分支追踪远程分支(比如,追踪 GNURadio 服务器上的分支):

    $ git branch --track local_new_work origin/new_work
$ git checkout local_new_work

上面是基于假定此"new_work"是处于已经克隆的库上的。

Git 的图形浏览工具 - Git Graphical Browsing Tools

有那么一些 GIT 的图形浏览工具诸如:gitk 和 qgit。gitk 是源于 TCL/TK GUI用于浏览 Git 的库的历史记录。 qgit 是一个 QT GUI 用于浏览 Git 的库的历史记录,它同 gitk 相似但具有更多的性能。

从旧版的 Subversion 库迁移到 Git Repository

Subversion 的导入在 "git-svn-id" 行的描述的结尾包含有修正的编号。比如,可以通过对 svn 的修正码 10184 做如下操作来生成和确定一个新的分支。

  1. git-svn-id 中寻找命令的哈希值 -  Find the commit hash from the git-svn-id.
      $ git log --grep=git-svn-id.*@10184
  2. 通过此哈希值创建并确认以  r10184 命名的新的分支 - Create and checkout a new branch named r10184 from the commit hash.
      $ git checkout -b r10184 cd7b07f0140ddff6

其它资源 - Other Resources

其它一些对于学习和使用 GIT 很有用的站点资源:




注:How to use git to track your own gnuradio code(原文出处,翻译整理仅供参考!)