概念:
git 是一个工具,帮我们管理项目
- `git` 官方名称: **分布式版本管理器**
- 私人解释: 就是一个管理我们文件夹的工具
- 只不过可以保留所有的版本信息
- 就是我们安装一个软件
- 然后用这个软件来管理我们的一个文件夹
- 这个文件夹被 `git` 管理以后,我们可以对他进行各种操作
- 保证我们写过的内容不会丢失
公钥的设置:
在git 中执行 'ssh-keygend' ---回车
公钥的位置:
- `Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa.pub):` 公私钥的位置
git的使用:
让 git 管理我们的文件夹
- 必须告诉 git,我的某一个文件夹需要被管理,这个时候 git 才会来管理
- 打开你想要被 git 管理的 目录,在这个目录中打开 git 命令窗口
- git 有给我们提供一个窗口 ,这个窗口可以使用 ,右键==》`git bash` 打开
- 在命令行用指令告诉 git,需要管理这个文件夹
- 这条命令叫:`git init`
- 回车之后,会在文件夹中出现一个叫 .git 的隐藏文件,表示文件夹以及所有子文件目录都被 git 管理了
git的分区:
- 当我们对一个文件进行 `git init` 之后,会自动帮我们分区,三个区
- 工作区:我们看得见,写源代码的位置
- 暂存区:你想要提交到远程仓库的文件,需要先把这些文件放到暂存区
- 历史区:生成一个版本,只能把暂存区里面的东西生成一个版本,在上传的时候,只能上传历史区的内容
- 查看 git 管理文件夹的状态 `git status`
- 如果文件在工作区的时候,在编辑器中呈现绿色(文件名后面为 u),在 git 窗口中呈现红色
- 如果文件在暂存区的时候,在编辑器也是浅绿色(文件名后面为 A),在 git 窗口中呈现绿色
git的三个区的切换:
- 1.把工作区的文件添加到暂存区
- `git add index.txt` 单独向暂存区添加一个文件
- `git add css/` 单独向暂存区添加一个文件夹(这个文件夹不能是空的)
- `git add --all` 把所有工作区的文件一次性全部丢到暂存区,这里有一个简写 - `git add .`
- 2.把暂存区里面的文件 拿回来到工作区
- `git reset HEAD -- index.html` 单独拿回来一个文件
- `git reset HEAD -- css/` 单独拿回来一个文件夹
- `git reset HEAD -- .` 暂存区所有的东西都拿回来
- 3.把暂存区的代码放到历史区
- 为了把当前的这些代码形成一个版本
- 向历史区添加代码(会把暂存区的所有内容都放在这个历史区)
- `git commit -m "版本的说明"`
- 会提示你添加全局的用邮箱和用户名:注册 gitee 的邮箱
- `git config --global user.email "邮箱"`
- `git config --global user.name "名字"`
- 填写完邮箱和用户名的时候 再次执行`git commit -m "版本的说明"`
- 查看版本信息:`git log`
```txt
commit 0aa683df67c600018e49f33b4889fb36cfaf1d0e
Author: jingjing <18878554277@163.com>
Date: Thu Dec 10 14:52:22 2020 +0800
我是第一次提交内容
```
- 还原到之前的历史版本:
- `git reset --hard HEAD^` 向前回退一个版本
- `git reset --hard 历史版本号` 回退到某一个指定的版本
- 把本地的仓库 添加到远程的仓库(gitee)
- 需要把本地的仓库 和远程的仓库进行连接 `git remote add test 远程仓库的地址`
- 查看是否关联成功:`git remote -v`
- 第一次把本地的代码推送到远程:`git push -u test master`
- 一般情况下 第一次推送可能需要输入用户名和密码
- 用户名:gitee 的邮箱
- 密码: gitee 用户密码
- 当完成第一次推送之后 后面再次推送的时候 直接 `git push`
gitee 是一个网站存放项目的网站
仓库:
本地仓库:
远程仓库
推送仓库
同步(拉起)、、、
## 08.两个 git 相关的文件
- 空文件夹的话 git 的是不会管理
- `.gitkeep` 就是为了保留空文件夹使用的,只有后缀没有名字
- `.gitignore` 表示在 git 管理你的文件夹中忽略哪些东西
- 直接写在一个和 `.git` 同级的文件夹下
- `index.html` 忽略一个指定的文件
- `/css` 忽略一个指定的文件夹
- `*.css` 忽略指定后缀的文件
## 怎么把本地已有的文件 与 远程仓库链接
- 需要在 gitee 中创建一个仓库
- 点击+号==》新建仓库===》写仓库员名字===》确定
- 本地的仓库打开 git 命令窗口
- 把本地的仓库和远程仓库进行连接:`git remote add origin 远程仓库的地址`
- 把本地历史区中内容推送到远程仓库:`git push -u origin master`
- 如果已经提交过一次之后 再次提交直接:`git push` 即可
## 09.从远程仓库拉取项目 到本地
- 使用 git 命令 下载
- 选择一个你存放文件的地方
- 然后打开 git 窗口
- 使用 `git clone 你要下载的地址`
- 需要把工作区的内容放入暂存区
- 需要把暂存区的内容添加到历史区
- 然后直接 git push
- 当你是从远程下载下来的代码,进行提交的时候,直接 `git push`即可
- 因为在下载的时候有链接了 远程的仓库
- 先在远程创建一个仓库,在本地电脑中根据远程仓库的地址 把这个文件夹克隆
- 把你的项目复制到克隆下来的文件夹中
- 把文件添加到暂存区,然后添加到历史区,最后 git push
## 10.git 分支
- 项目模块的划分:登录 注册 首页 列表页 详情页 购物车
- 第一个人:登录注册
- 第二个人:首页 列表页 详情页
- 第三个人:购物车
- 把一个文件夹中的所有内容区分开了来开发
- 按照功能去区分
- 主要分支
- 一般情况下只有初始化的目录结构
- 有一个项目的主要负责人去创建的主分支
- 功能模块的分支:login
- 只进行登录模块的开发
- list 分支
- 只进行 list 模块的开发
- 创建一个分支
- 每一个 git 初始化的是默认会创建一个 master 分支(主分支)
- 我们也可以创额外的分支
- `git branch 分支名字`
- 查看分支
- `git branch`
- 切换分支
- `git checkout 分支名称`
- 合并分支,一般情况下都是在 master 分支进行合并
- `git merge 你要合并的分支名称`
- 合并分支的时候 一般情况下只能一次合并一个,合并完成之后,需要先把这个合并后的代码添加到历史区
- 然后在合并另一个分支,合并完成之后,需要先把这个合并后的代码添加到历史区
- 当所有的分支合并完成 就可以提交(在 master 的这个分支去提交 git push)
- 删除分支(一般是在其他分支上删除另一个分支,不能在自己的分支上删除自己)
- `git branch -d 分支的名字`
- 提交分支的代码
` git push --set-upstream origin 分支名字`
- 主分支:管理项目的架构,合并其他分支的代码
- 其他分支:按照模块去分块,一个模块一个分支
## 11.代码冲突问题
- 当多人开发同一个项目的时候
- 两个人都改变了同一个文件的时候,就会发生冲突
- 当发生冲突的时候,第二个人没有办法提交项目
- 如果需要提交项目,就需要解决冲突的问题
- 解决:不管是谁,在提交之前一定要把远程仓库的代码拉去下来
- 然后远程的代码和本地的代码进行比较
- 你选择器需要保留的代码,然后在进行上传
- 采用当前的更改:保留你自己写的代码
- 采用传入的更改:保留别人上传到远程仓库的代码
- 保留双方更改:把两个都保留
## 12.如果每次提交都需要密码的设置
- 在命令行输入:`git config --global credential.helper wincred `
- 然后检测:`vim ~/.gitconfig `
- 如果窗口中出现:`hepler == wincred `
- 就设置成功,我们再次提交,只需要我们输入一次用户名和密码,git 就会帮我们缓存起来。以后提交就不用输入了
## 建议的操作
- 不要直接把本地的代码 直接推送到远程的空的仓库
- 【1】先在远程仓库创建一个空的仓库
- 【2】把远程的仓库 先克隆下来
- 【3】把你需要上传到远程仓库的代码放到克隆下来的文件中
- 【4】在进行 git push 就可以直接推送(不需要做关联的步骤),克隆的时候 已经进行关联
## 在 push 之前,一定需要先拉去,git pull
- 拉去代码下来的时候可能会存在代码的冲突
- 先去跟开发人员确认好
## vscode 也可以直接提交代码
- 0.先用 git 命令 把远程的仓库下克隆到本地,用 vscode 打开这个文件
- 1.点击更改 的 + 号 就表示把工作区的内容添加到 暂存区
- 2.点击 √ 的时候 就表示把暂存区的内容添加到 历史区,一定要在输入框中写描述信息
- 点击右上角的 三个点===》拉取代码解决冲突===》重复 1 2 步骤==》点击右上角的 三个点==》推送
## 二阶段项目提交的内容
- git 代码的地址
- 上传到服务器的地址
- 讲解项目的一个视频
- 给一个登录用户名和密码