一、Git工作流程
- 只要被Git管理了 文件发生变化(增 删 改)使用Git就能看到它变成红色了
- 工作区的变更 要提交到暂存区 变成绿色
- 从暂存区提交到版本库 才会被版本管理 一旦被版本管理 后期可以回退到某个版本
- 可以把版本库的内容提交到远程仓库统一管理起来(可以有多个开发者 都可以发起提交)
- 本地可以拉取远程的代码
- 本地可以把本地代码提交到远程仓库
说明:
- 有红色信息(工作区有内容),就执行 add
- 全绿信息(内容全部在暂存区),才执行 commit
- 只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本
二、Git常用命令
- 将已有的文件初始化为Git仓库
// 安装完成默认是存在跟路径的隐藏文件 需要打开隐藏文件 Shift + Ctrl + .
cd 目标文件夹内部
git init # 使当前路径成为Git仓库
- 初始化Git仓库
cd 目标文件夹内部
git init 仓库名
- 查看当前状态命令
git status
- 配置全局用户
git config --global user.name '用户名'
git config --global user.email '邮箱地址' // 默认会在根路径隐藏文件.gitconfig里面添加了记录
- 配置局部用户
git config user.name '用户名' // 需要进入到文件夹内部
git config user.email '邮箱地址' // 默认会在根路径隐藏文件.git/config里面添加了记录
- 把工作内容提交到暂存区(文件内必须有内容 否则不会显示)
git add. // 把工作区所有更改的文件提交到暂存区
git add 文件名 // 把单个文件提交到暂存区
// 当前查看状态变绿色了 进入暂存区了
- 把暂存区内容提交到版本库(需要加上注释 此版本添加了什么内容 越详细越好)
git commit -m '注释内容'
// 提交完查看状态没有颜色 说明当前文件已经被Git库管理了
- 查看版本情况(一个版本只有一个ID号)
git log // 全部信息
git reflog // 精简的显示
- 修改文件之后 退回之前状态
git checkout . // 当前的所有操作回退 不包含新增的文件
- 把版本内容 回退到暂存区
git rest --soft 上一个的版本号 // 不是此次修改的版本号 是上一次
- 从版本库回退到工作区(状态红色)
git reset -- 版本号 // git log 查看版本号 不需要全部
git rest --mix 版本号
- 从当前状态回到之前任意状态(隐藏文件)
git reset --hard 版本号 // 再次输入则回到输入的版本号
- 查看时间点之前之后的日志
git log --after 2018-6-1
git log --before 2022-11-08
git reflog --after 2018-6-1
git reflog --before 2018-6-1
- 查看指定开发者日志
git log --auther auther_name
git reflog --author author_name
- 回退上一个版本
git reset --hard HEAD^ // 回退到上一个版本
git reset --hard HEAD^^^ // 回退到上3个版本
git reset --hard HEAD3 // 回退到上3个版本
git reset --hard 35cb292 // 回退到某个版本
- 案例一
修改一下文件 提交到本地版本库
git status // 变红了
git add. // 提交在暂存区
git status // 变绿了
git commit -m '修改了文件' // 注释.....
git status // 没有颜色了
- 案例二
新建一个视频文件 显示与不显示 // 创建文件
git status // 红色状态
git add. // 添加到暂存区 绿色
git commit -m '注释' // 提交到版本库
git log // 查看版本信息
git reset --hard 版本号 // 回退到某个版本
git reset --hard 版本号 // 回退到创建文件的状态
三、Git过滤文件
在我们上传数据库的时候,会有些文件夹没用或者是很大不需要上传
这个时候就可以使用过滤文件,只需要在文件内创建一个文件.gitignore
没有后缀
eg:
- a.txt:项目中所有a.txt文件和文件夹都会被过滤
- /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
- /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
- x:名字中有一个x的都会被过滤(*代表0~n个任意字符)
- 空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
四、Git多分支开发
- 创建分支
git branch '分支名称'
- 查看分支
git branch // 默认是master分支
- 切换分支
git checkout 分支名称
- 创建并切换到分支
git branch -b 分支名称
- 合并分支
git merge 分支名称 // 注意需要退回到mester分支 不能再当前分支进行删除
- 删除分支
git branch -d 分支名称
- 多个开发者都是在一个分支上进行开发,不出意外,该分支一定叫dev(协同开发)
- 如果出现一个特殊任务(敏感任务),与正常业务关系不紧密,甚至可能大的影响正常的dev分支开发,可以依赖dev开一个子分支,进行开发,开发完毕后合并到dev分支,再删除该分支即可
- 所有的开发任务都可以在dev分支上进行(除非公司硬性要求不能直接在dev分支开发,只能在dev子分支开发,测试通过后才能合并给dev)
- 如果再当前创建的分支 没有合并 回到主分支是看不到文件的
五、Git远程仓库
- 自己创建一个Git账号
- 新建仓库
- 填写库信息
- 根据提示完成用户配置
git config --global user.name "MeiJin"
git config --global user.email "1711031006@qq.com"
git remote add origin https://gitee.com/Lebron_Mei/test2.git
git remote //查看当前拥有的远程分支
git push -u origin "master" // 把master分支推到Git上
- 第一次上传需要输入用户名与密码(后续直接推送即可)
- 如果后续需要修改用户 Win(信息凭证修改)
六、SSH链接远程仓库 协同开发
- SSH链接首先需要设置好自己的SSH密钥公钥
ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com" // 终端根路径输入 后面跟上邮箱 会生成两个文件
- 这个时候添加公钥即可 SSH就设置好了
3.我们现在只需要在文件内设置好SSH分支即可
git remote remove origin // 删除之前的http分支
git remote // 查看分支
git remote add origin '自己项目的SSH路径'
git pull origin master // 拉取源地址文件
git push origin master // 上传分支 这样SSH协同开发就好了