Git的使用
git是一个分布式版本控制系统
目的:通过git管理github托管项目代码
git的两大特点
- 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题
- 分布式:git是一个分布式版本控制系统,同一个git仓库,可以分布到不同的机器上。首先找一台电脑充当服务器的角色,2小时开机,其他每个人都从这个“服务器”仓库份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。可以自己搭建这台服务器,也可以使用github网站
下载安装
官网:https://www.git-scm.com/download , 但是官网速度非常慢,建议百度,并在国内网站下载
windows上安装
安装过程:大致流程省略,只讲一些注意点
安装过程组件的选择:
选择使用命令行环境
其他的选择默认即可
检验是否安装成功:
回到桌面,空白处右击,如果发现菜单中新增了Git GUI Here和Git Bash Here,即表明安装成功
Unbuntu上安装
- sudo apt-get install git
Git的基本操作
Git工作区域
-
工作区(Working Directory)
即本地的项目区(工作的目录,有.git目录的目录),可以完成添加、编辑、修改文件等动作。
-
暂存区
暂存已经修改的文件最后统一提交到git仓库中(即给自己留个回旋的余地,方便撤销等操作)。我们使用git add就是添加修改到暂存区。
git管理的文件的修改,他只会提交暂存区的修改来创建版本 -
Git Repository(Git仓库)
最终确定的文件保存到仓库(工作区中的.git目录,也称为版本库),成为一个新的版本,并且对他人可见
向仓库中添加文件的流程
- git status 查看当前状况
- git add 文件(夹)名 将文件(夹)添加到暂存区,可以跟多个文件,也可以通过git add . 将所有文件添加到暂存区。在我们提交一个版本的描述之前,可以多次将一个版本的更改add到暂存区,然后一次提交,创建一个版本记录
- git commit -m “要提交的描述” 将文件提交到git仓库,一旦我们提交后,再用status查看,就会提示我们这是一个干净的工作区(因为刚刚提交所有修改)
git的初始化及仓库创建和操作
Git基础设置
git安装完成后,需要进行一些基本信息设置
- 设置用户名
git config --global user.name ‘用户名’
- 设置用户名邮箱
git config --global user.email ‘用户邮箱’
- 查看设置
git config --list
注意
:该设置在github仓库主页显示谁提交了文件
文件的几个状态
使用git status可以查看文件的状态:
- untracked:表明文件还没有add到暂存区,git没有办法帮助进行管理文件的内容
- modified:如果文件已经add到了暂存区,但是后来又对文件进行了更改,则用git status查看时,会发现该文件的状态为modified。另:可用git status -s查看哪些文件进行了修改,git diff查看修改的详细信息(-号表示删掉了,+号表示添加了)
- staged:文件已经add后的状态
初始化一个新的Git仓库
-
向仓库添加文件夹(在本地创建一个文件夹)
-
在文件夹内初始化git(创建git仓库),git可以帮助我们管理某一目录下代代码,要让它帮我们进行管理,就需要对其进行初始化
- 切换到对应文件夹下
- git init,就会在对应目录下生成一个.git的隐藏目录,该目录储存了所有的本地仓库信息
-
向仓库中添加文件
即之前所述的几个流程
向仓库添加文件
-
在本地对文件进行修改
-
将文件添加到暂存区
git add 文件名 -
将文件提交到git仓库
git commit -m ‘描述’
使用如上两个命令,我们就能够创建一个版本
- 查看版本的记录,如图
git log
如果内容过多,可以用 git log --pretty=oneline 来简短的显示
在我们创建一个版本的时候,git究竟做了什么?
- 当我们使用add和commit创建一个版本(记为版本1)的时候,git就相当于记录一个点
- 当我们再次创建一个版本的时候,git就记录我们在上一个版本上做的更改(比如,添加了一行代码),这个记录就是版本2。即:后面的版本依赖于前面的版本,并不是将后面的版本完整的拷贝一份
版本的回退
在git中,记录了一个指针,叫做HEAD,指向了最新的版本,HEAD^
指向了它的上一个版本,HEAD^^
指向其上上一个版本,依次类推;也可以使用例如HEAD~100
表示HEAD的前100个版本
假设我们要回到上一个版本,可以使用命令:git reset --hard HEAD^,此时,HEAD就指向了上一个版本(假设是从版本2回到了版本1)。
但是,git并没有将版本2删除掉,因此,我们还可以使用如下命令回到某个版本(eg:从版本2回到版本1后,又想回到版本2):git reset --hard 版本号(即上面截图中的版本的序列号,没有必要输入整个版本号,输入前几位即可)
使用:git reflog,可以查看之前操作的记录(包括各个版本的序列号),如图所示:
撤销修改
还没有add到暂存区:当我们对工作区的文件进行了修改,但是还没有add到暂存区,就可以使用:git checkout – 文件名 来丢弃修改
已经add到了暂存区:但是还没有commit,1. 先使用 git reset HEAD 文件名 以取消暂存(status查看时,就从绿色的modi);2. 使用 git checkout – 文件名 来撤销修改(丢弃工作区的改动)
如果已经commit:就必须进行版本的回退来撤销修改
对比文件的不同
使用命令:git diff
对比工作区和版本库
git diff HEAD – 文件的名字:将工作区的文件与版本库中的最新版本相对比(减号是前面的文件,加号对应的是后面的文件)
- 加号+表示工作区比版本库新增的,减号-表示工作区比版本库删除的。没有加减号的表示没有变动的部分
对比两个版本中文件的不同
git diff HEAD HEAD^ – git.txt:对比最新版本和上个