什么是Git
版本控制器 - 控制的对象是开发的项目代码
代码开发时间轴:需求1 > 版本库1 > 需求2 > 版本库2 > 版本库1 > 版本库2
Git与SVN区别
- SVN
服务版与用户版分离
服务版宕机后,开发进度停滞,修复后,整合代码也存在一定的风险问题
- Git
服务版与用户版整合在一起,任何机器上都安装了两个版本
git本地与远程代码交互,客户端不参与,是两个服务端进行交互,版本库与版本库进行交互
服务器宕机,可以将任何一个开发者的版本库作为公用版本库,继续开发
由于上面的特点,git可以做集群,可以同时又多个服务端
Git使用
安装
下载对应版本:https://git-scm.com/download
安装git:在选取安装路径的下一步选取 Use a TrueType font in all console windows 选项
Git操作流程
基础指令
-
初始化本地Git仓库
方式一: 将已有文件夹初始化为仓库
>: cd 目标文件夹内部
>: git init
方式二: 在指定目录下创建仓库
>: cd 目标目录
>: git init 仓库名
案例: 将Git_test文件夹初始化为Git仓库
将目标文件夹初始化为Git仓库后,该文件夹内会有一个.git隐藏文件夹,其内容有:
此时,Git_test文件夹内的内容都会被.git文件夹管理
-
创建用户
方式一: 设置全局用户
>: git config --global user.name '用户名'
>: git config --global user.email '用户邮箱'
注:在全局文件 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用
方式二: 设置局部用户
>: git config user.name '用户名'
>: git config user.email '用户邮箱'
注:在当前仓库下的config新建用户信息,只能在当前仓库下使用
注:一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户
-
查看仓库状态
当仓库中有文件增加、删除、修改,都可以在仓库状态中查看
>: git status
-- 查看仓库状态
>: git status -s
-- 查看仓库状态的简约显示
案例: 在Git_test文件夹内创建一个1.txt文件
-
工作区内容提交到暂存区
方式一: 提交项目中所有文件
>: git add .
方式二: 提交指定文件
>: git add 文件名
案例: 将1.txt文件提交到暂存区
-
暂存内容撤销至工作区
方式一: 撤销所有暂存区的提交
>: git reset HEAD .
方式二: 撤销某一文件的暂存区提交
>: git reset 文件名
案例: 将暂存区的1.txt文件回滚到工作区
-
提交暂存区内容到版本库
git commit -m "版本描述信息"
案例: 将1.txt文件提交到本地仓库
补充: 提交至仓库时,若出现 Please tell me who you are. ,则需要先创建用户
-
工作区回滚操作
方式一: 回滚所有的文件
>: git checkout .
方式二: 回滚指定的文件
>: git checkout 文件名
注意:
只有提交到版本库的文件被改动了才能被checkout回滚
在工作区新增加的文件不会被checkout回滚,因为还没有被仓库管理
checkout不能将暂存区的文件回滚至工作区
案例: 修改1.txt文件的内容,再在Git_test文件夹内新增加2.txt文件,用checkout 回滚
-
查看日志
1.查看历史版本:
>: git log
>: git reflog
2.查看时间点之前|之后的日志:
>: git log --after 2018-6-1
>: git log --before 2018-6-1
>: git reflog --after 2018-6-1
>: git reflog --before 2018-6-1
3.查看指定开发者日志
>: git log --author author_name
>: git reflog --author author_name
案例:
-
回滚到指定版本
回滚到上一个版本:
>: git reset --hard HEAD^
>: git reset --hard HEAD~1
回滚到上三个版本:
>: git reset --hard HEAD^^^
>: git reset --hard HEAD~3
回滚到指定版本号的版本:
>: git reset --hard 版本号
eg: git reset --hard 35cb292
案例:
过滤文件
在仓库根目录下创建 .gitignore 文件,在该文件内编写要过滤的文件夹或文件
注意: 开发中,将项目文件夹初始化为仓库后就要创建过滤文件
过滤式:
- 文件的绝对路径: 代表所有目录下的同名文件或文件夹都被过滤
- /文件或文件夹名: 代表仓库根目录下的文件或文件夹被过滤
案例:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
过滤模板:
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
scripts
db.sqlite3
*.pyc
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?