目录
一、Git版本控制简介
Git的版本控制,用一个例子形容就是,一个长期的项目到完成需要经过不断的更新,而每次更新都需要保留更新后的副本(比如写毕业论文时需要把每一次修改的版本都会另存为桌面,这样显得就非常的杂乱),并且由于更新的次数较多自己也有可能记不清楚每次修改的位置。而Git通过他的版本控制系统(主要是利用指针很好的解决了这一问题)。本次内容就是对Git进行版本控制的详细操作流程。
二、具体操作
2.1.初始化本地库(repository)
2.1.1新建本地库
首先,假设此次需要创建的项目名称为test1。在相应的工作区(就是此文件夹)中,通过Git Bash打开。通过以下代码命令初始化本地库
git init
通过终端上的信息(Initialized empty Git repository),Git告诉我们创建好了一个空的本地库,在D盘的工作区内。
此时,我们可以通过检查工作区来确认此信息。此时打开工作区就可以发现在工作区文件夹中多出了.git的文件夹。
2.1.2查看隐藏文件的方法
如果不存在此文件夹的话,可以通过以下两种方式查看。(查看隐藏文件的方法)
①Linux用于查看隐藏文件的命令。(虽然是在Windows系统上,但Git Bash的使用方式和Linux系统非常相似,在Linux系统中能够使用的命令,在Git基本都能实现。)
ls -ah
结果如图所示
②windows工作区勾选查看隐藏文件。方法如下图所示,在勾选隐藏的项目后即可看见.git文件夹。
2.2.文件添加至暂存区
2.2.1添加文件
这里以,在工作区test1中创建一个新的txt文件(hello.txt)为例。(这里创建和上述查看隐藏文件相同也可以使用Linux命令Vim来创建,也可以直接在Windows下新建就不再赘述)
在此次文本中共有4行分别是5个1、2、3、4。
在创建好文件后,通过下述命令可以查看当前本地库的状态
git status
终端中给出如下信息:
①目前处在master分支下;②目前还没有上传过本地库③存在为跟踪的文件需要使用git add命令将其提交到暂存区。
根据提示,我们使用该命令将其添加到暂存区:
git add hello.txt
在添加完毕后,再次通过git status 查看本地库的状态可以发现,他提示我们这个文件已经被添加了并且颜色变成了绿色,并告诉了我们在暂存区删除文件的方式:
2.2.2删除文件
在这里我们尝试一下删除暂存区文件的命令,并在删除后重新查看本地库的状态。
git rm --cached hello.txt
可以发现本地库的状态又恢复成了刚修改完hello.txt文件后的状态。
我们重新将hello.tx添加到暂存区。
2.3.文件提交到本地库
2.3.1提交文件
此时,我们创建的文件hello.txt目前只在暂存区内,还没有提交到本地库。使用下述命令提交,这是非常有意义的一步,因为引号中的first commit 信息其实是版本控制信息,可以根据自己的需求修改,比如second commit/change 3 line 等等。
git commit -m "first commit" hello.txt
git commit -m "版本控制信息" 文件名
结果如下图所示。他告诉我们master分支第一次提交了暂存区,改变了一个文件,插入了4行(这和我们之前创建hello.txt时的操作是相同的)。其中,e2c38bf这一串数字为简略版的版本号。
我们可以通过git status 命令再次查看此时本地库的状态。
此时,终端上说明没有需要提交的文件,工作区是干净的。
2.3.2查看版本状态
通过下述两个命令可以查看目前本地库的版本状态。其中git reflog是简易版,git log是完整版。
git reflog
git log
结果如图所示。有如下的信息:
①e2c38bf其实是版本号的前七位。②在完整版中包括了提交的作者用户签名和邮箱以及提交日期的信息。
2.4.修改文件重新提交
我们此时修改hello.txt文件的内容。(Windows/Linux两种方式)。如图在每一行后增加了一个h。
此时再查看版本状态时,又出现在2.1中相同的场景。hello.txt标红,并且出现提示需要更新文件或者忽视文件变化。
为了更新文件产生的变化我们必须重新走一遍上述的流程即:
添加暂存区->提交本地库
git add hello.txt
git commit -m "second commit" hello.txt
注意看此时终端信息。 版本号和版本控制信息发生了改变。另一方面,虽然我们只是在每一行的最后添加了h,终端提示的却说四行被删除四行被新增,这是由于Git没有在末尾新增的命令,它所采取的方法是将要改变的行删除后重新写入。
此时再利用git reflog 和git log 命令来查看版本信息。可以看到提交两次的详细信息。并且目前的指针是指向第二次提交的结果。
此时,工作区中也只有一个hello.txt文件。通过命令来查看他的内容验证(是更新后的内容)。
2.5.版本穿梭
2.5.1方法
版本之间穿梭使用的方法是改变head指针的指向,控制的对象是版本号。使用如下的代码
git reset --hard e2c38bf
git reset --hard 版本号(精简版和完整版都可以)
并且通过git reflog查看更新后的版本号。通过终端信息可以看出当前指针指向的是第一个文件。
为了能够更清晰的看出版本的变化查看hello.txt里的内容。
又变成了第一个版本的内容。
通过这种方式,进行不同版本间的控制。
2.5.2原理介绍
首先,打开.git文件下的refs文件夹->heads文件夹->master。
当前master指向的是第一个版本的版本号。
我们再回溯到第二个版本。
再次查看master里面的内容,已经变成了第二个版本的版本号。
‘’
也就是他是通过指针来改变读取的内容。head->master->版本号
当发生版本穿梭的时候只是改变了master指向的对象,如图所示。
三、总结、
3.1流程示意
首先,在创建一个新项目时,先初始化本地库。每当项目有新的文件或者文件被修改的时候,便重新添加暂存区,在每次修改完毕后,都将暂存区中的内容提交到本地库。
在查看不同的版本时,通过版本穿梭可以查看不同版本的内容。
3.2代码总览
代码 | 作用 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加文件到暂存区 |
git rm –cached 文件名 | 删掉暂存区文件 |
git commit –m “版本信息” 文件名 | 提交文件到本地库 |
git reflog | 查看版本信息,简略版 |
git log | 查看版本信息,完整版 |
git reset –hard 版本号 | 版本穿梭 |
Linux相关 | 作用 |
vim 文件名 | 打开一个文件没有则创建 |
ls -ah | 查看当前文件夹下文件,包括隐藏文件 |
cat 文件名 | 查看文件内容 |