Git版本控制工具
概念:这是一个管理文件夹的工具,当这个文件夹被管理后,他会保留我们所有对这个文件夹的所有更改,以便我们快速找到某个固定的版本,也可保证我们文件夹的内容不会丢失
下载
- https://git-scm.com/
- 默认安装完成后git --version出现版本后安装完成
Git命令操作
- Git是一个需要再命令行操作的软件
- 到需要管理的文件夹下然后鼠标右键点击然后Git Bash Here会出现命令行终端
Git本地库使用
- git区域创建:在要管理的文件夹打开终端窗口输入git init
Initialized empty Git repository in E:/gitwork/管理系统/.git/
- git区域介绍
- 工作区:我们写源代码的地方
- 暂存区:我们把想要存储的代码先展示存放的地方
- 历史区:暂存区最终的去除,这里放着所有我们要保存的代码
- 初始化用户名与邮箱
- $ git config --global user.name “name”
- $ git config --global user.email “123456789@qq.com”
注:只用在最开始初始化一次就好,后续初始化会覆盖以前的值
- 内容添加在暂存区
- 一个文件或文件夹放在暂存区$ git add 文件名
- 所有文件和文件夹所在暂存区$ git add --all || $ git add .
- 把暂存区文件拿回到工作区
- $ git reset HEAD – 文件名
- $ git reset HEAD – .
- 删除暂存区文件
$ git rm --cached 文件名 - 添加历史区
- 暂存区存放的文件在删除后还是会丢的,只有在保存到历史区后才会一直记录下来
- $ git commit -m “记录版本的信息”
- 在版本多了后,后面的说明信息很重要,可以依靠他查找具体版本
- 示例
$ git commit -m "管理系统前端1.1.0" [master (root-commit) 705455b] 管理系统前端1.1.0 4 files changed, 11305 insertions(+) create mode 100644 web/index.html create mode 100644 web/jquery.js create mode 100644 web/login.html create mode 100644 web/signin.html
- 查看日志
- $ git log
- 示例
$ git log
commit 705455b0775e1b60789a4979e4ac2a0a8ceba8bf (HEAD -> master) Author: pengcheng <123456789@qq.com> Date: Tue Apr 19 14:55:10 2022 +0800 管理系统前端1.1.0
- (HEAD -> master)类似于指针,表示当前在那个版本
- commit版本号 Author作者名 Date本次版本记录时间
- $ git reflog回退查看原来版本号
- 版本回退
-
当我们修改下内容再次添加到历史区,再次查看时会有两个版本号
$ git log
commit 01f2ca96460d8dde3718f72c1c66087280fcbfc2 (HEAD -> master) Author: pengcheng <123456789@qq.com> Date: Tue Apr 19 15:15:00 2022 +0800 提交后端路由模块1.1.0 commit 705455b0775e1b60789a4979e4ac2a0a8ceba8bf Author: pengcheng <123456789@qq.com> Date: Tue Apr 19 14:55:10 2022 +0800 管理系统前端1.1.0
-
$ git reset --hard 版本号进行历史回退
$ git reset --hard 705455b0775e1b60789a4979e4ac2a0a8ceba8bf HEAD is now at 705455b 管理系统前端1.1.0
-
$ git reset --hard HEAD ^回退到相邻上一个版本
-
$ git reset --hard HEAD~100回退到之前的第100个版本
- 恢复本次误删文件
- 保存在历史区文件如果误删除了,可以通过以下步骤恢复
- $ git status
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: router/user.js
deleted: router/userinfo.js
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
app.js
db/
router-handler/
schema/
web.js
- $ git reset HEAD 被删除文件
$ git reset HEAD router
Unstaged changes after reset:
D router/user.js
D router/userinfo.js
- $ git checkout 被删除文件
$ git checkout router
Updated 2 paths from the index
- 忽略提交文件
- 创建.gitignore文件$ touch .gitignore
- 在文件中写入要忽略的文件
- 忽略规则
语法 | 含义 |
---|---|
target | 忽略这个target目录 |
angular.json | 忽略这个angular.json文件 |
log | 忽略log下的所有文件 |
css/*.css | 忽略css目录下的.css文件 |
Git远程库
注册账号
git远程库有很多,github由于服务器在国外,网速慢,推荐使用gitee
地址:https://gitee.com
远程仓库操作
- 需要在远程仓库中创作新的仓库
- 在创建成功后的下面有仓库连接地址,拿到在git命令行输入就行
- 建立连接$ git remote add origin https://gitee.com/pengcheng933/background-management-system.git
- 传输数据$ git push -u origin “master”之后需要输入你注册gitee的用户名和密码
- 只有保存在历史区的文件才能上传
- 当第二次上传就不用输入用户名和密码,$ git push
- Git克隆
- git克隆就是将从远程仓库中的东西复制到本地(可以是自己的,也可以是别人的开源)
- 在想要存放的位置打开git命令行输入$ git base
- 输入克隆指令$ git clone 仓库地址
- Git下拉
当我们拿到仓库中资源后,如果向获得最新资源,只需要$ git pull - Git冲突
- git冲突是指本次版本和远程版本不一致导致的,我们只需使用$ git push回拉就可以了
- git pull相对不安全,因为会自动和本地资源合并,可以使用$ git fetch
- 使用fetch(意:取来)获取远程资源并开辟一个临时分支$ git fetch origin master:tmp
- 将当前分支与临时分支内容进行对比$ git diff tmp
- 再选择合并分支内容$ git merge tmp
Git本地分支
- 概念:分支类似多线程运行,开辟分支后,所有分支并行运行,互不影响
- 开辟一个login分支$ git branch login
- 查看分支$ git branch
结果: login
* master
开辟后有两条分支,一条是我们目前正在的前面有*的master主线,另一条是开辟出来的login分支 - 切换分支$ git checkout login
$ git checkout login
Switched to branch 'login'
19009@▒▒▒▒ MINGW64 /e/gitwork/管理系统 (login)
$ git branch
* login
master
- Git分支合并
- 切换到主线$ git checkout master
- 合并$ git merge login
- 删除分支
- 切换到别的分支上$ git checkout master
- 删除分支$ git branch -d login
GIT远程分支
- 查看远程分支$ git branch -r
- 创建远程分支$ git push origin 分支名
- 删除远程分支
- $ git push origin :heads/分支名
- 也可以在远程仓库中选择删除分支
- 拉取远程仓库
- $ git checkout -b 本地分支名 origin/远程分支名
该方式会新建本地分支并切换到分支 - $ git fetch origin 远程分支名:本地分支名
- 克隆远程分支$ git clone -b 远程分支名 地址
可视化GIT工具
- 下载地址https://tortoisegit.org/download/
- 右键直接打开
SSH Key
- 用于本地与远程中央仓库连接认证(不用每次输入用户名或密码,当然WIN7以上版本会自动记录,也不同输入)
- 本地生成ssk key需要用到rsa公私密钥队
- 输入$ ssh-keygen
- 执行命令时,默认回车完成文件创建,默认会在系统用户目录下会生成.ssh目录,其下有两个文件id-rsa与id-rsa.pub,打开id-rsa.pub公钥文件,复制所有内容
- 粘贴到gitee账户=>设置=>ssh设置中
- 配置完成后输入$ ssh -T git@gitee.com检查是否配置成功