认识 git | |
+ 是一个基于操作系统运行的工具(软件/环境) | |
+ 作用: 管理你本地的文件夹 | |
=> 上传到远程 | |
=> 历史跳转 | |
+ 如果你想上传到 github, 那么只能使用 git 这个软件 | |
github | |
+ 是一个网站 | |
=> 私人: 想象成一个网页版的百度云盘 | |
+ 用来保存你的项目源代码 | |
=> 可以选择公开或者不公开 | |
=> 协同开发(单人异地协同开发, 多人协同开发) | |
+ 特殊的作用 | |
=> 个人能力的体现 | |
gitee(码云) | |
+ 是一个网站 | |
+ 和 github 作用一样, 接受 git 上传的代码 | |
=> 中国人的网站 | |
+ 和 github 的区别, 就是上传的时候, 填写的地址不一样 |
git的安装
git 安装 | |
+ 下载安装包 | |
=> 官网下载: https://git-scm.com/ | |
+ 双击安装包运行 | |
=> 一路下一步, 直到最后 | |
+ 检测安装 | |
=> 方案1: 来到桌面, 或者任意空白位置 | |
-> 单击鼠标右键 | |
-> 出现 git bash here 和 git gui here 表示安装成功 | |
=> 方案2: 打开命令行, 目录无所谓 | |
-> 输入指令: $ git --version | |
-> 出现版本号, 表示安装成功 | |
+ 提供 | |
=> 提供了一个新的命令行工具 | |
=> 可以在这个 命令行 工具内使用指令来管理你的文件夹 | |
=> 点击 git bash here, 就是一个命令行工具 | |
=> 注意: | |
-> 当你使用指令来管理你的文件夹的时候 | |
-> 可以使用电脑自带的终端 | |
-> 可以使用 git bash | |
git 首次安装需要进行的配置 | |
1. 查看我的 git 配置列表 | |
=> 打开命令行(终端, git bash), 目录无所谓 | |
=> 输入指令: $ git config --list | |
=> 会在命令行出现你当前的 git 配置内容 | |
2. 配置全局用户名 | |
=> 打开命令行, 目录无所谓 | |
=> 输入指令: $ git config --global user.name "你的用户名" | |
3. 配置全局邮箱 | |
=> 打开命令行, 目录无所谓 | |
=> 输入指令: $ git config --global user.email "你的邮箱" | |
=> 注意: 邮箱使用真实邮箱 | |
git管理本地文件夹
git 管理本地文件夹 | |
1. 把文件夹交给 git 管理 | |
+ 告诉 git 这个软件, 我这个文件夹你帮我管理一下 | |
+ 打开命令行, 切换目录到你需要 git 帮你管理的文件夹 | |
+ 输入指令: $ git init | |
+ 指令执行完毕 | |
=> 在该文件夹下回多出一个文件夹, 叫做 .git/ | |
=> 是一个隐藏文件夹 | |
=> 只要有 .git/ 文件夹, 就表示当前目录被 git 这个软件管理了(git 仓库) | |
=> 该目录及所有子目录, 都会接受 git 的管理 | |
+ 注意: | |
=> 当你需要使用 git 的指令的时候 | |
=> 必须要要保证这个文件夹是被 git 管理的 | |
2. 查看当前文件状态 | |
+ 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
+ 输入指令: $ git status | |
+ 查看当前目录下所有文件的管理状态 | |
3. 将工作区的内容插入到暂存区 | |
+ 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
+ 输入指令: | |
=> $ git add 文件名 | |
-> 把单一一个文件放在暂存区 | |
=> $ git add 文件夹名称/ | |
-> 把单一一个文件夹放在暂存区 | |
=> $ git add --all | |
-> 把目前工作区所有内容都加入到暂存区 | |
-> 简写: $ git add . | |
4. 将暂存区的内容拉回工作区 | |
+ 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
+ 输入指令: | |
=> $ git reset HEAD -- 文件名 | |
-> 拉回单一文件回到工作区 | |
=> $ git reset HEAD -- 文件夹名称 | |
-> 拉回单一文件夹回到工作区 | |
=> $ git reset HEAD -- . | |
-> 拉回暂存区所有内容回到工作区 | |
5. 形成历史版本 | |
+ 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
+ 输入指令: $ git commit -m "说明" | |
+ 会把当前暂存区内所有的内容形成一个历史版本 | |
=> 并且清空暂存区 | |
6. 查看历史版本 | |
+ 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
+ 输入指令: $ git log | |
+ 会以倒序的形式给你展示你的历史版本 | |
// 当前版本的版本 id | |
commit db72376a130c5ca737866ec7aeb47ea956d9aafa | |
// 签名(全局用户名和邮箱) | |
Author: guxiang1991 <wdbbdpd223322@gmail.com> | |
// 时间 | |
Date: Fri Jun 18 10:19:12 2021 +0800 | |
// 你写的提交说明 | |
第二版 | |
+ 记录一下几个版本 | |
=> 第一版: 3c8b6ffb5204f46441e4c2e5b792eb25248e6782 | |
=> 第二版: db72376a130c5ca737866ec7aeb47ea956d9aafa | |
=> 第三版: 3b21e742ddc6ef93b39ce6ce98524be2d6b90c8f | |
7. 本地历史跳转 | |
+ 作用: 回到过去的历史版本 | |
+ 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
+ 输入指令: $ git reset --hard 版本id | |
+ 你的文件夹会回到你指定版本时的状态 | |
git 仓库是什么样子的 ? | |
+ 当一个文件夹被 git 管理以后 | |
+ 会变成一个 git 仓库 | |
+ 就会 "虚拟" 的把这个文件夹变成三个区域 | |
=> 工作区 | |
=> 暂存区 | |
=> 历史区 | |
工作区: | |
+ 你所有书写在仓库中的代码(文件) | |
+ 都是放在工作区内, 表示你的源代码 | |
暂存区: | |
+ 可以把工作区的内容在暂存区创建节点 | |
+ 保存一份工作区的内容 | |
+ 目的是为了形成历史版本 | |
+ 你想形成历史版本, 只能把暂存区的内容形成历史版本(不能直接把工作区形成历史版本) | |
历史区: | |
+ 可以把暂存区的内容形成一个历史版本 | |
+ 当你向前跳转的时候, 只能跳转历史区内存在的历史版本 | |
+ 可以上传到远程 | |
+ 你想上传到远程, 只能把历史区内的历史版本上传, 不能直接上传 暂存区和工作区 |
上传到远程
1. 第一次上传(该本地仓库的第一次上传) | |
1-1. 建立一个远程仓库 | |
=> 在 github 或者 gitee 上建立一个文件夹 | |
=> 打开网站 | |
-> 右上角有个加号 | |
-> 如果是 gitee 点击 新建仓库 | |
-> 如果是 github 点击 new repository | |
-> 填写仓库名称(就相当于一个远程文件夹名称, 不要用中文) | |
-> 仓库介绍无所谓 | |
-> 点击创建 | |
1-2. 给本地仓库设置远程地址 | |
=> 设置一个将来上传要上传到什么位置的地址 | |
-> 你远程仓库的地址 | |
-> 如果你要上传 github 就填写 github 地址 | |
-> 如果你要上传 gitee 就填写 gitee 地址 | |
=> 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
-> 输入指令: $ git remote add 变量 地址 | |
-> remote 指远程地址 | |
-> add 指添加 | |
-> 变量 你自己定义一个变量名 | |
-> 地址 你要上传的地址 | |
1-3. 上传到远程 | |
=> 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
=> 输入指令: $ git push -u 变量 master | |
-> -u 的含义: | |
-> 比如你有两个远程添加了 | |
-> 一个是 origin 记录了地址 a | |
-> 一个是 origin2 记录了地址 b | |
-> 第一次上传的时候书写了 -u origin, 那么第二次的时候, 不用书写 origin 自动上传到 origin | |
-> 第一次上传的时候没有写 -u origin, 那么第二次如果还想上传到 origin, 那么还得写一次 origin | |
2. 第二次上传(指的是同一个本次仓库的第二次上传) | |
2-1. 保证有未上传过的历史版本 | |
2-2. 直接 git push |
下载到本地
1. 第一次下载远程仓库 | |
1-1. 打开网站(github 或者 gitee) | |
=> 找到你需要下载的那一个远程仓库 | |
=> 点击 克隆/下载 按钮 | |
=> 赋值 https 地址 | |
1-2. 在本地找到一个你需要存在该文件夹的位置 | |
=> 打开 命令行 | |
=> 输入指令: $ git clone 地址 | |
=> 就会把该远程仓库下载到本地 | |
2. 第二次下载远程仓库 | |
2-1. 打开命令行, 切换目录到第一次下载的文件夹下 | |
=> 输入指令: $ git pull | |
3. 上传问题 | |
=> 如果你 clone 的是你自己的仓库 | |
=> 那么可以直接在这里上传 | |
=> 如果你 clone 的是别人的仓库, 那么不能上传 |
git的分支
git 的分支 | |
+ 在把当前的内容复制一份一模一样的内容 | |
+ 在复制出来的内容上进行开发 | |
+ 开发完毕以后再次进行合并 | |
1. 创建分支 | |
+ 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
+ 输入指令: $ git branch 分支名称 | |
+ 作用创建一个新的分支 | |
=> 注意: 新分支上的内容就是当前分支的所有内容 | |
2. 查看当前分支 | |
+ 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
+ 输入指令: $ git branch | |
3. 切换分支 | |
+ 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
+ 输入指令: $ git checkout 分支名 | |
4. 合并分支 | |
+ 打开命令行, 切换目录到 .git/ 文件夹所在的目录 | |
+ 输入指令: $ git merge 分支名称 | |
+ 注意: 只能是你站在某一个分支上, 把其他分支合并到自己身上 | |
5. 分支的命名规范 | |
5-1. master 分支 | |
=> 创建 git 仓库的时候, 默认生成的 | |
=> 不接受任何代码上传 | |
=> 只接受主开发分支合并来的代码 | |
5-2. dev 分支(development) | |
=> 主开发分支, 从 master 分支分出来的 | |
=> 不接受任何代码上传 | |
=> 只接受主功能分支合并来的代码 | |
5-3. feature-xxx | |
=> 主功能分支, 从 dev 分支上分出来的 | |
=> 进行主要功能开发 | |
=> 接受代码上传 | |
5-4. feature-xxx-xxx | |
=> 个人开辟的分支, 从 feature-xxx 分支上开发 | |
=> 用来细分自己的功能 | |
=> 还可以用来作为记录留存, 当项目测试中出现的 bug 需要你修改 | |
5-5. hot-xxx | |
=> 特殊分支: 直接从 master 分出来 | |
=> 遇到紧急 bug 需要处理, 再回开 | |
=> 修改完毕 bug 以后, 可以不经过测试直接合并回到 master |
git的冲突
+ git 上传的过程中, 异地上传的过程中 | |
+ 有可能会出现冲突问题 | |
+ 为什么会出现冲突 | |
=> 本地和远程的版本不一致 | |
+ 解决冲突 | |
=> git pull 一下 | |
=> 在本地把冲突代码解决掉 | |
=> 再次 add commit push |
和git相关的几个文件
1. readme.md | |
=> 当你的远程仓库内有一个叫做 readme.md 的文件 | |
=> 会自动把文件解析成 html 格式显示在首页 | |
2. .gitkeep 文件 | |
=> 是一个只有后缀没有名字的文件 | |
=> 为了保持目录结构 | |
=> 因为 git 不会管理空文件夹 | |
-> 当我们初始化项目的时候 | |
-> 其实就是为了保持一个目录结构 | |
-> 就需要在文件夹内部放一个没有意义的文件 | |
-> 最好放一个 .gitkeep 文件 | |
3. .gitignore 文件 | |
=> 是一个只有后缀没有名字的文件 | |
=> 在这个文件里面写上需要 git 忽略的内容 | |
=> 你书写完毕以后, git 就不在管理这个文件内书写的内容了 | |
可视化工具 | |
=> githubdesktop |