GIT命令行应用

原创 2012年03月21日 22:53:55

获得最新的内核源代码树

在使用 Git 管理源代码仓库时,我们可以使用两种方法开始我们的工作。我们可以使用现有代码的一个本地目录,然后从中生成一个仓库;也可以映射其他人发布的仓库。

对于本文的目的来说,我们将获得 Torvalds 发布的 Git 仓库的一个镜像。下面的命令将创建一个名为 linux-2.6 的 Git 仓库。这个目录包含了一个隐藏目录 .git/ 。

$ git-clone \
 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
 linux-2.6

这个步骤会执行很长时间,因为 Git 正在将内核源代码(这有数百兆大)从 kernel.org 传输到本地机器上。输出结果可能有些晦涩难懂,但是如果您有一个快速的 Internet 链接,卷屏的速度应该相当快。输出结果应该类似于图 1 所示。


图 1. 在下载内核源代码树过程中产生的输出
在下载内核源代码树过程中产生的输出

现在切换到包含新下载的内核的目录中:

$ cd linux-2.6

现在,我们应该在本地机器上有一个可以工作的 Linux 2.6 仓库了!此时我们就可以对这个仓库进行一些基本的操作了。

更新本地 Git 仓库

在使用 Git 时,我们通常可以假设自己的仓库可能比 kernel.org 的仓库有些滞后。因此我们通常都是首先将自己的仓库更新成最新的上游内核树。这个过程有时称为快速合并(fast-forward merge)。严格来说,我们现在并不需要执行这个过程,因为我们刚刚安装了自己的仓库,它应该还没有过期。但是检查一下毕竟没有坏处:

$ cd linux-2.6
$ git-pull git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
		...

如果成功,我们就应该会看到类似于下面的输出结果:

receiving file list ... done

sent 130 bytes  received 21677 bytes  14538.00 bytes/sec
total size is 127865858  speedup is 5863.52
Already up-to-date.
$>

如果我们的仓库不是最新的,就会看到有些内容通过网络传输到本地机器上了。

从仓库中导出文件

我们需要将文件从 Git 仓库(隐藏目录中的那些文件)中导出到工作目录中才能开始自己的 hack 过程。下面的命令会在当前目录中写入没有隐藏的目录,其中包含了 Linux 的源代码:

$ git-checkout

如果您希望覆盖本地修改,可以使用 -f 选项导出文件,这样就可以将您带回到一个干净的状态:

$ git-checkout -f

现在在当前工作目录中,我们应该就可以看到熟悉的 Linux 源代码目录结构了,然后我们可以对这些源代码任意进行修改。

修改现有文件

我们现在可以修改所选择的任何文件。举一个简单的例子来说,我们将修改 docs 目录中的一些内容:添加一条以后可以很容易识别的信息。为了让我的例子更容易试验,我没有选择修改源代码;不过只要您希望,欢迎继续重写整个内核的子系统。

首先,让我们在编辑器中打开一个文件:

$ vi ./Documentation/ManagementStyle

显然,我使用的是 vi;不过您当然可以使用自己喜欢的任何编辑器来完成这项工作。在编辑文件时,我在第一段前面添加了一行:“Eli shall be in charge of managing sandwich consumption. See Documentation/Sandwiches for more.”

如果您对自己所做的修改非常满意,并且觉得自己已经准备好将其作为仓库的一个永久部分了,就需要使用下面的命令导入您的修改:

$ git-commit Documentation/ManagementStyle

您会被提示说要求提供一个提交消息,它是一个用户生成的注释,用来帮助其他开发人员(也可能是您自己以后)理解刚才的实现到底进行了哪些修改。在我们的例子中,提交消息是一个描述刚才对文档所做修改的短句。

如果您希望检查一下到目前为止工作的状态,可以执行 git-log 来查看本地仓库的历史(它继承了所克隆的仓库的信息)。您的提交消息应该在日志的最上面。

添加或删除文件

但是请等一下!我们还没有添加 Documentation/Sandwiches 文件呢,因此我们需要将其添加到工作目录中,并告诉 Git 何时这个文件已经准备好了。我使用 echo 命令创建了想要添加的文件,因为这只是一个简单的例子而已。同样,您也可以使用自己喜欢的工具。

$ echo "Turkey is superior" > Documentation/Sandwiches

现在我们已经添加了一个文件,接下来需要将这个文件添加到 Git 中,从而让 Git 了解这种变化,然后才能提交这个版本。我们可以通过执行下面的命令来完成这些任务:

$ git-add Documentation/Sandwiches
$ git-commit Documentation/Sandwiches

如果您添加了多个文件,可以在同一行中的 git-add 命令后面列出这些文件,不过您也不必一次将它们全部添加到仓库中去。如果要删除某个文件,并且没有 git-add 之类的特殊命令;您只需要删除这个文件,然后提交就可以了。

现在应该查看一下 git-log,从而确保到现在为止所做的事情都是正确的。这一次,我们将使用 -p 选项来以单独的补丁格式查看日志。

$git-log -p

创建 diff 文件

最后,我们希望生成一个包含您修改后的文件和原文件之间区别的文本文件。这个文件通常是使用 diff 工具创建的,因此就称为 diff 文件。diff 可以帮助我们创建补丁文件(patch file),后者是我们向很多开放源码软件项目发送代码提交时通常使用的方法。有关 diff 的更多内容,请参看下面 参考资料 部分中有关 Kernel.org 的链接。

Git 还可以干什么?

我们可以使用 Git 来管理本地仓库,而不用镜像其他人的工作。例如,如果我们喜欢使用 Git 来管理自己个人对某个开放源码项目贡献的文件,就可以从项目快照中生成一个 Git 仓库。

假设我们已经有了一个名为 release.tar.gz 的标准 release tarball,可以执行下面的命令来创建一个本地的 Git 仓库:

$ tar -zxvf release.tar.gz
$ cd release
$ git init-db

我们可以看到消息说 Git 是 “默认于本地存储区域的”。这些消息都是正常的,说明我们有一个 Git 仓库。

现在我们已经对工作目录进行了初始化,接下来在项目目录中应该会看到一个新目录 .git。为了告诉 Git 我们希望对这个项目中的每个文件都进行跟踪,请执行下面的命令:

$ git add .

最后,使用下面的命令将所监视的文件提交到仓库中:

$ git commit -a

同样,系统会提示我们输入提交消息。从现在开始,我们就可以在自己的 Git 仓库中使用 Git 所提供的完整功能了,例如对实验特性进行分支,为了追踪回归测试问题而将代码一分为二,并使用常见的版本历史功能。

有关 Git 的分支管理和其他有趣特性的更多信息,请参看 Kernel.org 上给出的 Git 的优秀教程(参见 参考资料 中的链接)。

结束语

现在我们已经知道如何使用 Git 来获取 Linux 内核源代码和其他 Git 管理的项目了,接下来可以选择使用 Git 来管理下一个开发项目。 Git 仍然相对较新,仍然处于不断开发中。其他脚本和工具正在实现用来简化 Git 的使用;请参看 参考资料 中给出的例子。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Git命令行工具

  • 2017-05-13 19:05
  • 35.43MB
  • 下载

git命令行学习小结

git reset 回退版本命令 上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100 git reset命令既可...

通过git命令行从github或服务器上克隆、修改和更新项目

项目开发时,为了方便版本管理,许多公司采用git来控制项目版本。简单介绍下: 第一步:在本地新建一个文件夹,作为本地仓库,如“test”。打开git bash,进入到该文件夹目录下,如下图: 第二...

Git命令行

参考: 廖雪峰Git教程 阮一峰 分支管理策略 Git Book 添加SSH key ssh-keygen -t rsa -C “your email” 查看当前conf...

最好的git命令行教程

一:Git是什么?   Git是目前世界上最先进的分布式版本控制系统。   二:SVN与Git的最主要的区别?   SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的...

通过git命令行从github或服务器上克隆、修改和更新项目

目前项目的管理基本上都用上了git,svn现在很少用了,所以我们必须要了解git客户端的使用!第一步:在本地新建一个文件夹,作为本地仓库,如“texzt”,直接打开该文件夹,并单击右键,选择git b...

Eclipse使用git命令行

虽然我们可以使用Eclipse的git插件进行大部分的git操作,但是部分操作使用Git命令行比较方便,如何在 Eclipse 中使用 Git命令行?以下是博主个人方法,如有其他方法请和博主分享。 ...

Vim快捷键&&Git命令行

两种模式(一共三种模式) 正常模式(命令行模式):Esc键- 插入模式(输入模式):a,i 可视模式 命令 新建或编辑:e(edit):e hello.txt 保存w(write):w 退出q(qui...

Git命令行操作对本地代码提交看着一篇就够了。

第一部分:创建远程代码仓库 一、登录到git官网hub,新建一个版本仓库 二、在“Repository name”一栏里填写版本仓库的名称,如”test”,Description栏是描述,可填...

git命令行使用

$ git remote set-url origin http://192.168.0.100/android/traveler99.git 设置git代码仓库的地址 $ git status 查看...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)