Simple Git

本文旨在成为最简单的Git入门。贡献归于Pro Git

什么是版本控制?

控制、管理软件开发中程序版本变化的软件。方便团队协同工作。

  • 本地化版本控制
  • 集中式版本控制
  • 分布式版本控制

目前我们主要使用的是分布式版本控制。

什么是Git

Git是Linux社区在2005年开发的一套开源的分布式版权控制软件,具有简单、高效、功能齐全等特性。可应付各种复杂的项目开发需求。

基本的 Git 工作流程

  1. 在工作目录中保存修改某些文件。
  2. 对修改后的文件进行快照,然后保存到暂存区域
  3. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。
    以下将解释这一工作过程。

安装 Git

在 Ubuntu 这类 Debian 体系的系统上,可以用 apt-get 安装:

  $ apt-get install git

估计这里要在命令前加sudo。其他系统也相当容易。

初次运行 Git 前的配置

用户信息设置

配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新:

1
2
$ git config --global user.name "Alice Bob"
$ git config --global user.email alice@example.com

也许只有用户信息设置是最致命的,其他的,慢慢学习了之后再配置吧。可用git config --list命令查看配置信息。

##Git 基础
将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令。

### 创建Git仓库
有两种方式:创建与克隆。
####新建
1. 为项目建立目录,进入目录,执行以下命令: $ git init

如果当前目录下有几个文件想要纳入版本控制,需要先用git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:
1
2
3
$ git add *.c
$ git add README
$ git commit -m 'initial project version'

2.克隆
所谓克隆,即把某项目的 Git 仓库复制一份出来。比如,要克隆 Gnu PG的 Git 代码仓库 gnupg,可以用下面的命令:
1
$ git clone git://git.gnupg.org/gnupg.git

这会在当前目录下创建一个名为gnupg的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。

### 记录更新
工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。未跟踪文件即不纳入版本管理的文件。已跟踪文件是被纳入版本控制管理的文件,它们的状态初始是未更新,经过修改之后变成已修改,然后被放入暂存区(状态是已暂存),最后提交所有暂存文件到Git仓库,文件状态又变成未更新。如此不断反复:
>未更新—->已修改—->已暂存—->未更新

#### 检查当前文件状态
git status命令可查看出文件当前状态,比如:
1
2
3
$ git status
On branch master
nothing to commit, working directory clean

如果创建一个新文件 README,保存退出后运行git status 会看到该文件出现在未跟踪文件列表中。

#### 跟踪新文件
使用命令 git add 开始跟踪一个新文件。所以,要跟踪 README 文件,运行:
1
$ git add README

暂存已修改文件

要暂存更新过的文件,需要运行git add 命令(功能还挺复杂的)。比如,你修改了一个文件叫something.c,运行git add something.c就可以把这个文件转为暂存状态。然后你还可以继续修改。此时如果你需要再次运行git add something.c命令把文件重新暂存起来。

提交更新

把暂存的文件提交更新,运行命令:

1
$ git commit

在此之前,请一定要确认还有什么修改过的或新建的文件还没有git add过。

只要在提交的时候,给git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add 步骤。(提问:哪为何还要git add命令?)

查看提交历史

想回顾下提交历史,可以使用 git log命令查看。

自此你已经学习了最最基本的Git功能,知道如何创建、克隆文件仓库,知道如何暂存、更新。还有很多复杂的功能需要进一步学习,我不会告诉你我还不懂的,不过,我还是要用以下命令撤销我说的这句话:$ git commit --amend