《Git学习指南》——2.2 第一个Git项目

本节书摘来自异步社区《Git学习指南》一书中的第2章,第2.2节,作者: 【德】René Preißel(普莱贝尔) , Bjørn Stachmann(斯拉赫曼)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.2 第一个Git项目

在这里,我们建议你最好能为接下来的Git测试单独开辟一个项目。总之应先从一个简单的小项目开始。在我们这个小小的示例项目中,first-steps目录下只有两个文本文件,如图2.1所示。

《Git学习指南》——2.2 第一个Git项目

图2.1 我们的示例项目

在开始摆弄这个玩具项目之前,我们建议你最好先做一个备份!尽管在Git中,想要造成永久性的删除或破坏也不是件容易的事情,而且每当你要做某些“危险”动作的时候,Git通常也会发出相应的警告消息。但是,有备无患总是好的。

2.2.1 创建版本库
现在,我们首先需要创建一个版本库,用于存储该项目本身及其历史。为此,我们需要在该项目目录中使用init命令。对于一个带版本库的项目目录,我们通常称之为工作区。

> cd /projects/first-steps 
> git init
Initialized empty Git repository in /projects/first-steps/.git/

init命令会在上述目录中创建一个名为.git的隐藏目录,并在其中创建一个版本库。但请注意,该目录在Windows资源管理器或Mac Finder中可能是不可见的。

《Git学习指南》——2.2 第一个Git项目

图2.2 本地版本库所在的目录

2.2.2 首次提交
接下来,我们需要将foo.txt和bar.txt这两个文件添加到版本库中去。在Git中,我们通常将项目的一个版本称之为一次提交,但这要分两个步骤来实现。第一步,我们要先用add命令来确定哪些文件应被包含在下次提交中。第二步,再用commit命令将修改传送到版本库中,并赋予该提交一个散列值以便标识这次新提交。在这里,我们的散列值为2f43cd0,但可能会有所不同,因为该值取决于文件内容。

> git add foo.txt bar.txt 
> git commit --message "Sample project imported." 
master (root-commit) 2f43cd0] Sample project imported.
2 files changed, 2 insertions(+), 0 deletions(-) 
create mode 100644 bar.txt 
create mode 100644 foo.txt

2.2.3 检查状态
现在,我们来修改一下foo.txt文件的内容,先删除bar.txt文件,再添加一个名为bar.html的新文件。然后,status命令就会显示出该项目自上次提交以来所发生的所有修改。请注意,新文件bar.html在这里被标示成了未跟踪状态,这是因为我们还没有用add命令将其注册到版本库。

> git status 

# On branch master 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in 
#                                                     working directory) 
# 
#      deleted:   bar.txt 
#      modified:  foo.txt 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#      bar.html
no changes added to commit (use "git add" and/or "git commit -a")

如果我们还想看到更多细节性的内容,也可以通过diff命令来显示其每个被修改的行。当然。有很多人可能会觉得diff的输出是个非常难读的东西。幸运的是,在这一领域,我们有许多工具和开发环境可用,它们可以将这一切显示得更为清晰(见图2.3)。

《Git学习指南》——2.2 第一个Git项目

图2.3 图形工具(kdiff3)中的Diff报告

> git diff foo.txt 
diff --git a/foo.txt b/foo.txt 
index 1910281..090387f 100644 
--- a/foo.txt 
+++ b/foo.txt 
@@ -1 +1 @@ 
-foo 
\ No newline at end of file 
+foo foo 
\ No newline at end of file

2.2.4 提交修改
接下来,所有的修改都必须要先被归档成一次新的提交。我们要对修改过的文件和新文件执行add命令,并对要删除的文件使用rm命令。

> git add foo.txt bar.html 
> git rm bar.txt 
rm 'bar.txt'

现在再次调用status命令,我们会看到所有的修改已经被纳入了下一次提交中。

> git status 
# On branch master 
# Changes to be committed: 
#   (use "git reset HEAD <file>..." to unstage) 
# 
#       new file:   bar.html 
#       deleted:    bar.txt 
#       modified:   foo.txt 
#

然后用commit命令提交这些修改。

> git commit --message "Some changes." 

[master 7ac0f38] Some changes. 

3 files changed, 2 insertions(+), 2 deletions(-)  
create mode 100644 bar.html  
delete mode 100644 bar.txt

2.2.5 显示历史
log命令可用来显示项目的历史,所有提交都会按时间顺序被降序排列出来。

> git log

commit 7ac0f38f575a60940ec93c98de11966d784e9e4f 
Author: Rene Preissel <rp@eToSquare.de> 
Date: Thu Dec 2 09:52:25 2010 +0100 

    Some changes. 

commit 2f43cd047baadc1b52a8367b7cad2cb63bca05b7 
Author: Rene Preissel <rp@eToSquare.de> 
Date: Thu Dec 2 09:44:24 2010 +0100 

    Sample project imported.
上一篇:u-boot 源码修改 bootcmd,IP ,BOOTARGS等参数


下一篇:CSDN博客如何添加量子恒道统计?