分布式版本控制系统——Git
- 一、Git安装
- 二、创建版本库
- 三、将文件交给Git管理
- 四、Git的工作区和暂存区
- 1.工作区(Working Directory)
- 2.版本库
- 五、版本回退和撤销修改
- 1.版本回退
- 2.撤销修改
- 六、删除文件
- 七、常用基础命令总结
- 八、参考
- 分布式版本控制系统,每一台计算机都有一个完整的版本库。
- 集中式版本控制系统,版本库存放在中央服务器。
- 所有的版本控制系统,其实
只能跟踪文本文件的改动
,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件
,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来
,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道
。 Microsoft
的Word
格式是二进制格式
,因此,版本控制系统是没法跟踪Word文件的改动的,如果要真正使用版本控制系统,就要以纯文本方式编写文件。
一、Git安装
- ① 在
Windows
上使用Git
,可以从Git
官网直接下载安装程序,然后按照默认选项安装即可。 - ② 安装完成后,在开始菜单里找到
Git Bash
,蹦出一个类似命令行窗口的东西,就说明Git
安装成功了。 - ③ 安装完成后,还需要最后的配置,因为
Git
是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。git config --global user.name "Your Name" git config --global user.email "email@example.com"
- 注意:
git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git
仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
- 注意:
二、创建版本库
- 版本库也叫仓库
(repository)
,可以简单的理解成一个目录,这个目录里面的所有文件都可以被Git
管理起来,每个文件的修改、删除,Git
都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。 - ① 首先,选择一个合适的地方,创建一个空目录:
mkdir -p d:/code/test-git cd d:/code/test-git pwd
pwd
命令是用来显示当前目录的。注意:使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(保留父目录)不包含中文。
- ② 通过
git init
命令把这个目录变成Git可以管理的仓库。
三、将文件交给Git管理
-
① 在刚才的仓库目录
test-git
目录下编写一个readme.txt
文件,内容如下:Git is version control system. Git is free software.
- 如果使用 Windows 出现上面的警告,我们现在先不用管的,不会影响使用的。
-
② 用命令
git add
告诉Git,把文件添加到仓库git add <fileName> #添加一个文件 git add . #添加所有文件
-
③ 用命令
git commit -m "这里写备注"
告诉Git,把文件提交到仓库:
git commit
一次可以提交很多文件。
-
git status
命令可以让我们时刻掌握仓库当前的状态。 -
git diff <filename>
命令顾名思义就是查看difference,可以查看修改的内容。 -
例如下面我修改
readme.txt
文件后查看,当前仓库的状态以及修改的内容:
注意:Git管理的是修改(删除一行、删除一个文件、添加一个字符等都算修改),而不是管理的文件。
每次修改,如果不用git add
命令到暂存区,拿就不会加入到commit
中,所以如果你你想每一次的修改都被commit
,那么你要确保每一次修改后都有被git add
。
四、Git的工作区和暂存区
1.工作区(Working Directory)
- 就是在自己电脑里能看到的目录,比如我们前面创建的
test-git
文件夹就是一个工作区。
2.版本库
- 工作区有一个隐藏目录
.git
,这个不算工作区,而是Git的版本库。 - Git的版本库里存了很多东西,其中最重要的就是称为
stage(或者叫index)
的暂存区,还有Git为我们自动创建的第一个分支master(main)
,以及指向master(main)
的一个指针叫HEAD
。
- 在Git中,用
HEAD
表示当前版本,也就是最新的提交,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。 - 前面讲了我们把文件交给Git管理的时候,主要是分两步执行的:
- 第一步是用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区 - 第二步是用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
- 第一步是用
五、版本回退和撤销修改
1.版本回退
git log
命令显示从最近到最远的提交日志
(查看提交历史),如果嫌输出信息太多,看的眼花缭乱的,可以加上--pretty=oneline
参数。git reflog
命令,用来记录每一次命令。(查看历史命令)
- 那一大串的数字和字母是
commit_id
。
- 那一大串的数字和字母是
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard <commit_id>
。如果是回退到上一个版本直接使用命令git reset --hard HEAD^
2.撤销修改
- (1)修改没有提交到暂存区中:
git checkout -- <filename>
,可以丢弃工作区的修改:- ① 一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态。
- ② 一种是文件已经添加到暂存区后,又做了修改,现在,撤销修改就回到添加到暂存区后的状态。
- 总之,就是让这个文件回到最近一次
git commit
或git add
时的状态。
- (2)修改提交到了暂存区:
git reset HEAD <filename>
命令可以回到上面的场景(1)。
- (3)修改提交到了版本库中,想要撤销本次的修改,通过上面的
版本回退
可以实现撤销修改,但是前提是没有推送到远程库。
六、删除文件
- 直接在文件管理器中把没用的文件删了,或者用
rm
命令删了:- ① 如果确定从版本库中删除该文件,那就用命令
git rm <filename>
删掉,然后用git commit
。 - 先动手删除,然后使用
git rm <filename>
和git add <filename>
效果一样的。
- ① 如果确定从版本库中删除该文件,那就用命令
七、常用基础命令总结
git init #创建一个版本库
git add <filename> #提交一个文件到暂存区
git add . #将所有修改提交到暂存区
git commit -m "comment" #将所有暂存区的修改提交到版本库中
git status #查看当前仓库当前的状态
git diff <filename> #查看修改的内容
git log --pretty=oneline #查看最近到最远的提交日志
git reflog # 查看每一次的命令
git rm <filename> #删除一个文件
git checkout -- <filename> #让这个文件回到最近一次git commit或git add时的状态
git reset --hard <commitId> #回退到指定的版本。
git reset --hard HEAD^ #退回到上一个版本
git reset HEAD <filename> #撤销暂存区的修改
八、参考
[1]. Git官网
[1]. Git简介 - 廖雪峰的官方网站——直接看这个谢谢,写的太好了。