Git Github Coding.net

来不及解释了,快上车!

Table of Contents

  1. 初识Git
    1. 什么是Git?
    2. 什么是版本控制系统?
    3. Git的诞生背景
    4. 集中式 VS 分布式
  2. 配置Git环境
    1. 安装Git
    2. Git config
    3. Git alias
  3. 创建仓库
    1. 创建本地目录
    2. Git init
    3. Git add
    4. Git commit
  4. 版本切换
    1. Git status
    2. Git diff
    3. Git reset

初识Git

什么是Git?

Git 是世界上目前最先进的分布式版本控制系统,由 Linux 之父 Linus Torvalds 设计开发,其初衷在于为 Linux 内核开发管理代码。

什么是版本控制系统?

设计师朋友们应该深有体会:打个比方,你的领导让你设计一张产品的宣传海报,

Git的诞生背景

以下内容引自廖雪峰的Git教程

很多人都知道,Git的作者Linus Torvalds在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

是的,就是这个帅哥是的,就是这个帅哥

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

集中式 VS 分布式

Linus一直痛恨的CVS以及SVN都是集中式的版本控制系统,而Git则是分布式版本控制系统的代表——集中式与分布式之间又有什么区别呢?

配置Git环境

安装Git

首先你可以试着输入git,检查当前环境是否已安装Git

1
2
3
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git

Git config

完成安装后,执行以下命令设置全局用户名以及Email地址

1
2
$ git config --global user.name "YOUR NAME"
$ git config --global user.email "YOUR EMAIL ADDRESS"

Git alias

当然,如果你希望每次输入命令时可以少打一些字母,通过简单的别名就可以执行复杂的Git操作,那么以下命令刚好满足你的需要

1
2
# 设置'status'的全局别名为'st'
$ git config --global alias.st status

创建仓库

创建本地目录

首先,创建一个目录用于我们接下来的Git操作

1
2
3
4
$ mkdir Git_Repo
$ cd Git_Repo
$ pwd
/User/AbelSu/Git_Repo

pwd命令用于显示当前目录路径,例如刚刚创建的仓库位于 /User/AbelSu/Git_Repo

Git init

接下来,使用 git init 命令在当前目录内创建Git仓库

1
2
$ git init
Initialized empty Git repository in /Users/AbelSu/Git_Repo/.git/

执行上述命令后,当前目录下会多出一个隐藏的.git目录,也就是刚才创建的Git仓库,用ls -ah命令即可查看

Git add

虽然我们已经创建了Git仓库,但是仓库还是空空如也——无论是创建仓库之前就已经存在的文件,还是之后新建的文件,其实还没有添加到Git仓库中。新建一个readme.txt文件,内容如下

1
2
Git is a version control system.
Git is free software.

保存退出后,返回该目录下使用git status命令查看当前仓库的状态如下

1
2
3
4
5
6
7
8
9
10
11
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# readme.txt
#
nothing added to commit but untracked files present (use "git add" to track)

接下来,使用git add <file>命令将指定文件添加到仓库

1
$ git add readme.txt

执行完上述命令不会有任何提示,这就对了 —— 根据 Unix 的哲学,“没有消息就是好消息”

Git commit

将指定文件添加至仓库后,我们需要借助git commit命令将本次的更改提交至Git仓库

1
2
3
4
$ git commit -m 'Add readme.txt file'
[master (root-commit) b9245a2] Add readme.txt file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt

看到上述提示表明本次修改已经提交成功

版本切换

在成功添加并提交readme.txt到Git仓库后,就让我们来测试一下Git的版本控制功能。修改readme.txt文件,内容如下

1
2
Git is a distributed version control system.
Git is free software.

Git status

完成修改后,执行git status命令,查看当前Git状态

1
2
3
4
5
6
7
8
9
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

git status 命令可以让我们时刻掌握仓库当前的状态,上面的提示信息告诉我们,readme.txt被修改了,但还没有准备提交的修改

Git diff

虽然我们知道文件被修改了,但是还不清楚究竟文件的哪部分与之前的版本不同。使用git diff <file>命令即可查看指定文件的状态

1
2
3
4
5
6
7
8
9
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.

git diff 顾名思义就是查看当前版本与已提交版本之间的差别,显示的格式正式Unix通用的diff格式

既然我们已经知道对文件进行了什么修改,接下来要做的就是添加并提交修改后的文件。使用git addgit commit命令提交修改,此处不再赘述

1
2
3
4
$ git add readme.txt
$ git commit -m 'add distributed'
[master 8870e7f] add distributed
1 file changed, 1 insertion(+), 1 deletion(-)

Git reset

在实际工作中,提交的代码版本数不胜数,光凭记忆是不可能记住总共提交过几个版本的。不过Git作为世界上最先进的版本控制系统,自然可以帮助我们免除后顾之忧。