一、Git是什么?
Git是目前世界上最先进的分布式版本控制系统
常见的版本控制工具有:
CVS、SVN、Git、···
SVN与Git的最主要区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
安装git
git完成安装后,可点击右键菜单并在里面找到Git Bash。点击Git Bash之后会弹出一个类似命令窗口的东西,就说明Git安装成功。
状态
git 又提供了三种(也可以说是四种)不同的记录状态
- 已修改(modified)
- 已暂时(staged)
- 已提交(committed)
- 有一个特殊的状态 ==> 未追踪(Untracked)
查看工作区的文件状态
git status
二、配置
用户信息
配置个人的用户名称和电子邮件地址:
git config user.name “你的姓名”
git config user.email “你的邮箱”
通过 --global
选项可以设置全局配置信息
git config --global user.name “你的姓名”
git config --global user.email “你的邮箱”
例子:
git config --global user.name "runoob"
git config --global user.email test@runoob.com
如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。
检查配置
打印所有config
git config --list
打印指定config
git config user.name
创建仓库
进入希望纳入 git 版本控制的项目目录,使用 git init
初始化
git init
该命令将创建一个名为 .git
的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这个目录也是上面我们说的三个区域之一,这个目录也是 Git 保存数据记录的地方,非常重要,如非必要,不要轻易改动
-
通过命令 git init 把这个目录变成git可以管理的仓库,如下:
-
已经存在
.git
目录
-
在当前aaa目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。如下:
Git 工作区、暂存区
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:一般存放在 .git目录下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
添加工作区文件到暂存区
git add
git add 1.txt
# 添加多个文件
git add 2.txt 3.txt
# 添加整个目录
git add ./a
# 添加多个目录
git add ./b ./c
# 添加所有文件
git add .
创建版本
git commit
会调用默认(或自定义)的文本编辑器
将暂存区里的改动给提交到本地 git 仓库,也就是为这次工作(一般会把某个具有特定意义的工作作为一个版本,它可以是多个文件的变化)
单行备注:
git commit -m
备注信息
修复提交
git commit --amend
git commit --amend -m 提交
修复(替换上一次)提交,在不增加一个新的提交版本的情况下将新修改的代码追加到前一次的提交中(忘记提交部分内容时/修复Bug时)
查看提交日志
git log
// 完整格式
git log
// 简要格式(单行)
git log --oneline
// 显示完整格式(包括删除的信息)
git reflog
删除
git rm
# 从 git 仓库与工作区中删除指定文件
git rm 文件
# 只删除 git 仓库中的文件
git rm --cached 文件
# rm 以后,需要 commit 这次操作,否则 rm 将保留在暂存区
##(工作区:无 暂存区:有 仓库:无)
##每次操作,都应该提交到仓库中记录
git add . 从暂存区内提交到仓库中
git commit -m 修正