1、简介
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
那git是如何来存储不同版本的文件的?
借由一张菜鸟教程中的图片来说明:
在我的理解,上图就是一个完整的git本地仓库,工作区类比一下就是你现在idea中正在编写的项目,当然项目因为你可能随时都在改动,所以他并不被存储到版本库中去。
但如果一次阶段性的编写完毕,那你就可以将工作区的文件提交到暂存区,事实上它只是一个文件,保存即将提交的文件列表信息。
Git仓库就是安全存放数据的位置,这里边有你提交的所有版本的数据。其中,HEAD 指向最新放入仓库的版本(这第三棵树,确切的说,应该是 Git 仓库中 HEAD 指向的版本)。
因此,Git 管理的文件有三种状态:已修改(modified)、已暂存(staged)和已提交(committed),依次对应上边的每一个流程。
2、本地的简单操作
2.1、修改与提交
光说无益,我们来上实际的操作。
我们新建一个文件夹叫做gitBlog,使用
git init
命令来进行git仓库的初始化,此时git三个区域都是空的。
我们此时在工作区新建一个文件README.md来模拟新建的项目文件,然后使用:
git status
命令来查看此时git中仓库当前的状态,显示有变更的文件。
发现提示我们有未跟踪的文件,让我们使用git add命令来提交工作区中的文件,所以我们继续操作
使用命令:
git add . //把工作区中所有文件提交到暂存区
然后我们将暂存区的文件提交至git仓库:
使用命令:
git commit -m "test1" //-m后面接的参数是本次提交的说明
此时提示我们无文件要提交,说明文件已经成功提交到git仓库当中。
2.2、删除与回退
回退
新建一个文件名为test1.txt
我们想要回退这个操作,即用暂存区中的文件覆盖掉工作区,使这次新建文件操作失效。
但是我们按照网上所说的暂存区覆盖工作区执行git checkout .操作,发现并没有覆盖掉,test1.txt依旧在工作区中。
但是我们把test1.txt文件添加到暂存区后,再在工作区修改它,此时再执行git checkout.操作,发现工作区的test1.txt被替换成了暂存区的test1.txt文件。
所以说明
git checkout
命令是在工作区和暂存区都有的文件里,把工作区的文件替换成暂存区中的文件。
把git仓库里的文件替换到暂存区中