这是一篇针对技术小白们的Git科普文章。
本文主要介绍版本控制工具Git的基本概念,
以及init,status,add,commit,reset,log几个基本命令。
什么是Git
在十多年前,有好多程序员一起开发Linux系统。
这么多人一起写一个软件,他们就需要一个好的软件来
控制代码的版本/回滚代码/并行开发。
最开始他们是用的一个现成的软件叫BitKeeper,
但是后来BitKeeper居然想收费!于是他们就开发出了Git…
没错,Git就是一个由程序员自己写的,
写给程序员自己用的,用来管理写程序的工具。
本文想做的就是把Git这个程序员用的工具
介绍给不懂写代码,但是要写文档,改文档的同学。
(所以本文的具体栗子是在Windows系统下进行)
什么是版本控制
举个栗子:
今天要写毕业论文,我打开了Microsoft Word, 写完了第一章。
但我突然有一个更好的想法,我决定重写第一章。
于是我按下了撤销按钮,Word文档回滚到了最开始的地方。
我坐了三分钟,我发现其实还是我之前的第一章写的比较好。
于是我按下了重复按钮,Word文档又回滚到了我写完第一章的时候了。
上面的栗子,其实就是一个典型的版本控制场景。
而Git作为版本控制的工具,做的就是文件级别的版本控制。
接下来我们直接来试用Git。
安装Git
首先我们到Git的官方网站(英文)
去下载最新的windows版本的git:
(当你用浏览器打开这个网站的时候,就应该有下载框弹出来了)
下载地址:https://git-scm.com/download/win
下载完毕以后打开,大部分设定用默认的就行了,
几个关键选项图示如下:
安装选项:
安装命令:
换行符操作:
安装完毕后我们在任意菜单右键,
应该就可以看到“Git Bash Here”的选项。
并且打开以后我们输入git version
可以查看到git版本号信息,
这就说明我们安装成功了。
$ git version
git version 2.9.0.windows.1
(具体版本可能会随时间变化,但这并不重要)
新手上路
打开Git Bash
git是一个命令行工具。
(虽然也有图形界面,但那个太蠢了,
我们还是学习更好用的敲命令吧)
首先我们打开一个文件夹,
比如我打开的是D:\git-first-lesson\XML这个文件夹,
然后右键菜单 -> Git Bash Here
,
就打开了一个这样的Git Bash:
再顺便说一下几个基本的命令:
ls
: list的简写,可以查看当前文件夹下有哪些文件(夹)cd
: ChangeDirectory,可以更换目录。cd ..
就是回到上一层目录
Git目录
想了解一个目录的状态,就使用git status
命令。
我们可以试着跑一下这个命令,但是Git会报这样的错误:
$ git status
fatal: Not a git repository (or any of the parent directories): .git
这个错误的字面意思是“错误:你并没有把当前目录(或者任何父目录纳入git版本控制)”。
所以为了将一个文件夹纳入版本控制,我们要使用git init
命令:
$ git init
Initialized empty Git repository in D:/git-first-lesson/XML/.git/
提示信息表示git已经初始化完成。
这个过程实际上是git在当前目录新建了一个**.git**文件夹:
然后我们再跑git status
就可以查看到当前目录状态了:
控制文件
在我们初始化完git以后,git默认是把所有文件帮我们找出来的。
但是假如我们并不希望修改.wmv音频文件,.bak备份文件,Data数据文件夹怎么办?
或者假如我们只想版本控制.xml文件该怎么做呢?
git在这里给我们留了一个控制文件,叫**.gitignore**文件。
我们可以右键 -> 新建文本文件 -> 重命名为.gitignore
或者直接在git-bash里面跑touch .gitignore
:
假如我们想无视wmv文件,bak文件和Data文件夹,我们修改.gitignore内容为:
*.wmv
*.bak
Data\
假如我们只想控制xml文件,我们可以修改为:
*
!*/
!.gitignore
!*.xml
然后我们可以再跑一次git status
查看文件夹状态:
(在本例中我的.gitignore只控制了xml文件)
设置/查看断点
Git最激动人心的地方到了:
有了前面的准备工作,
我们现在已经可以设置断点,
并且再未来随时回滚到任意断点了!
我们直接看看怎么设置断点(Commit):
- 使用
git add .
来记录当前目录的改动。 - 使用
git commit -m <commit_message>
来设置断点。
比如我们输入git add .
和git commit -m "My First Commit"
:
好了!断点设置成功!接下来我们可以查看我们设置的断点:
我们可以使用git log
来查看断点,或者是git log --oneline
来查看断点的简略信息。
比如这样子:
查看修改内容与回滚
到目前为止,我们所做的操作都不会修改当前文件夹。
我们只是将整个文件夹当前的状态纳入了版本控制。
接下来我们要做的就是改动文件了。
比如我们稍微改动了Struture\recurse.xml
这个文件。
使用git diff
可以查看当前文本和上一版本的区别。
使用git reset --hard HEAD
可以回到上一个断点。
总结
在本篇新手教程中,我们稍微介绍了版本控制和Git。
在安装完Git以后,我们接触到了以下命令:
命令 | 说明 |
---|---|
git version | 显示Git版本 |
ls | 列出当前文件夹内文件 |
cd data | 更改目录(进入data目录) |
cd .. | 回到上一层目录 |
git status | 查看Git状态 |
git init | 初始化(使当前文件夹纳入版本控制) |
touch .gitignore | 新建.gitignore文件 |
git add . | 使所有未被ignore的文件加入版本控制 |
git commit -m "My first commit" | 设置断点(准确的说是生成一个提交)(commit) |
git log | 查看历史 |
git log --oneline | 查看简单历史 |
git diff | 查看当前文件夹状态与最近断点的区别 |
git reset --hard HEAD | 回滚至上一断点 |
在之后的教程中,我们会更加深入地接触Git。
(完)