什么是git?
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
说白了就是用来管理我们的代码。
特点呢?
分布式版本控制系统
分支和合并比较廉价
灵活的工作流
速度快
安装?
mac ,linux 和unix系统下是自带git的,但是window下需要安装。
检查是否安装成功?
检查是否安装成功git,打开终端,输入git --version,可以查看到,如果电脑安装成功了,是可以查看到安装的版本号。
把你介绍给git?
需要让git知道是谁在开发。
配置你的名字:git config --global user.name "fanfan"(例如fanfan)
配置的邮箱:git config --global user.email "1137236604@qq.com"(例如1137236604@qq.com)
你只需要配置一次,以后git就会记住你。
git原理及基本命令
原理图

在git中,我们的文件分为四种状态
不需要管理的文件、没有改变的文件、文件改变、和暂存状态、通过文件的不同状态,决定了他们所在的区域,所以将git分成了三个区域
工作区(working directory)
暂存区(stage index)
历史记录区(history)
三者之间关系
工作区是我们能看见的区域,我们在工作区编辑代码,进行增删改查;编辑完成后,用git add将工作区的文件添加到暂存区;然后利用git commit提交文件到我们自己的分支结构。
初识git
首先我们在桌面上先新建一个文件夹
在终端里输入mkdir Start表示在桌面新建了一个名为Start的文件夹

回车之后,桌面上即新建了一个文件夹

操作之后
终端里输入cd Start表示进入这个文件夹

基本命令
git init 初始化、代表这个文件夹已经被git管理

输入**ls **查看Start中的内容 此时什么都看不到,因为我们还没有创建其他内容。
输入ls -a 代表查看Start中的隐藏的文件和隐藏的文件夹。发现此时,出现了一个.git文件夹。

这个时候我们不妨看一下,.git文件下都有什么东西,

其实这么多文件都是git的元数据,git的所有东西都在.git这个文件夹中,我们自己的东西都在Start这个文件夹中,git并不会干扰我们。
输入vi start.txt(vim start.txt也可以) 表示在Start文件夹中创建一个名为start的txt文件。

会弹出一个文件筐,我们在里面输入 one for text 然后按下ESC键,在按下冒号(shift+;)、输入wq保存。
上述表示我们在start.txt文件中写入一行文字one for text并且保存 退出

为了检验我们的操作,可以打开Start文件夹,查看里面的start.txt文件,效果如下

同理,我们再输入vi goon.html(vim goon.html也可以),新建一个名为goon的html文件,打开,输入div,按下ESC,再按下冒号(shift+;)、输入wq保存。
再次检验操作,如下表示操作正确

现在我们的Start文件夹中有两个文件
在终端输入** git status**(或者git st)查看文件状态

此时文件显示为红色,并且是新建文件,说明是在工作区,表示文件没有被跟踪管理,因为我们需要git去管理他,所以输入终端git add .,( add后面可以加参数,如果你只需要跟踪start,txt可以输入空格,再输入start.txt ,如果全部都需要跟踪,那么输入点. 注意后面有一个点)
输入之后,我们**git status **查看文件状态

此时文件显示绿色,且显示为新的文件,表示暂存区的状态,提交也只能提交暂存区的文件。那么输入git commit提交,此时会弹出一个编辑器。用来输入我们的日志,因为是第一次提交,我们输入first commit。按下ESC,再按下冒号(shift+;)、输入wq保存退出。
输入git log,就能查看我们的记录日志

在下面就能看见我们是谁操作的文件,他的邮箱是多少,操作时间。和他书写的日志。
更改文件
此时、我们新建了两个文件,输入的相关的内容,保存起来,并且提交了,但是现实中经常是需要更改文件内容的。下面来演示如何更改文件的内容。
在终端输入vi start.txt(vim start.txt也可以,这个如果有start.txt文件就会直接进入编辑状态,如果没有这个文件就会新建一个名为start.txt文件并且进入编辑状态),进入编辑状态,内容变更second for text。按下ESC,再按下冒号(shift+;)、输入wq保存退出。
此时,我们git status可以查看一下文件状态,记住,如果遇到红色的,表示我们工作区发生了改变。(git有三个区的概念,工作区,暂存区,历史提交区、工作区表示现在看到的磁盘上的文件。如果想记录我们的文件,可以先把文件提交到暂存区,等待其他关联文件的提交、)

此时文件为红色,并且为modified,表示文件更改,我们需要跟踪,git add start.txt 然后可以查看一下我们的文件状态git status

这时文件变为绿色、表示已经加入暂存区。并且可以提交。那么可以直接提交git commit。我们也可以输入git commit -m 加上双引号 里面输入我们的日志,代表输入日志并且提交、然后可以输入git log查看日志状态,那么我们就可以看到近两次的日志

这样我们就演示了两次完整的操作,第一次是两个新文件,我们需要跟踪,git add 加入到暂存区,然后就git commit提交。第二次是我们直接vim更更改现有的文件,git add加入暂存区,然后在git commit提交。
那我们也可以不加入暂存区,直接进行提交,但是前提是我们已经git add跟踪过文件并且git commit提交过。那么我们可以直接输入git commit -a -m “日志”也可以直接提交文件
整理一下目前学的几个命令
git init初始化git
git add 跟踪文件
git commit 提交文件
git log 查看日志
git status 查看文件状态
git clear 清除屏幕
ls 查看文件夹中都有什么内容
查看不同
现在**vi start.txt **打开start.txt并修改、在我们start中添加一行内容add something。保存退出(按照上述方式,不再赘述)。
此时输入git diff能够查看到文件的增删改查的变化。(git diff 后面可以直接加上start.txt也可以查看全部 git diff .)

git diff的作用远不止于此
现在git add . 把文件放入暂存区,然后输入git diff . 发现没有提示什么

刚在在工作区是查看文件修改后的状态和之前历史提交的状态的变化,现在我们把文件的git add修改提交到了暂存区,工作区恢复之前是一样的,所以我们输入git diff不会产生任何提示。现在文件提交到了暂存区,对于暂存区来说是有区别的。那么输入 git diff --staged,可以查看暂存区的变化,如图所示

现在我们提交文件并输入日志 **git commit -m “third commit” **把文件提交都历史记录区,然后再查看不同git diff . 这次也没有什么提示了。因为暂存区也恢复上次历史提交状态。

删除文件
git rm start.txt可以在暂存区删除文件。表示把文件移入到暂存区并且删除文件。

修改文件名
git mv 旧文件名 新文件名
删除start.txt后。ls查看下,现在还有goon.html 那么现在输入 git mv goon.html go.html表示把文件goon.html 更改为go.html ,ls查看一下,现在名字成功更改。

查看一下文件状态,能看到现在文件是在暂存区,那么我们git commit提交并书写日志就可以了。为了确认状态 git status 提示现在干净了就可以了、

这就是git的一些简单操作,当然git远不止这么简单。还有关于分支和github。陆续会介绍
网友评论