本文共 2969 字,大约阅读时间需要 9 分钟。
本节书摘来自异步社区《Git学习指南》一书中的第2章,第2.2节,作者: 【德】René Preißel(普莱贝尔) , Bjørn Stachmann(斯拉赫曼)著,更多章节内容可以访问云栖社区“异步社区”公众号查看
在这里,我们建议你最好能为接下来的Git测试单独开辟一个项目。总之应先从一个简单的小项目开始。在我们这个小小的示例项目中,first-steps目录下只有两个文本文件,如图2.1所示。
图2.1 我们的示例项目
在开始摆弄这个玩具项目之前,我们建议你最好先做一个备份!尽管在Git中,想要造成永久性的删除或破坏也不是件容易的事情,而且每当你要做某些“危险”动作的时候,Git通常也会发出相应的警告消息。但是,有备无患总是好的。
2.2.1 创建版本库
现在,我们首先需要创建一个版本库,用于存储该项目本身及其历史。为此,我们需要在该项目目录中使用init命令。对于一个带版本库的项目目录,我们通常称之为工作区。> cd /projects/first-steps > git initInitialized empty Git repository in /projects/first-steps/.git/
init命令会在上述目录中创建一个名为.git的隐藏目录,并在其中创建一个版本库。但请注意,该目录在Windows资源管理器或Mac Finder中可能是不可见的。
图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..." to update what will be committed) # (use "git checkout -- ..." to discard changes in # working directory) # # deleted: bar.txt # modified: foo.txt # # Untracked files: # (use "git add ..." to include in what will be committed) # # bar.htmlno changes added to commit (use "git add" and/or "git commit -a")
如果我们还想看到更多细节性的内容,也可以通过diff命令来显示其每个被修改的行。当然。有很多人可能会觉得diff的输出是个非常难读的东西。幸运的是,在这一领域,我们有许多工具和开发环境可用,它们可以将这一切显示得更为清晰(见图2.3)。
图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..." 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 logcommit 7ac0f38f575a60940ec93c98de11966d784e9e4f Author: Rene Preissel
转载地址:http://eafnx.baihongyu.com/