mirror of
http://47.106.207.27:3000/Jeremy_liu/AI0814_jiaoan_public.git
synced 2026-09-27 12:44:15 +08:00
更新w1_d3
This commit is contained in:
+412
@@ -0,0 +1,412 @@
|
||||
## git介绍
|
||||
|
||||
- 思考1:任何项目,是否有多个版本?如果是,每个版本的代码是否需要保存?
|
||||
- 有多个版本,每个版本的代码都要保存。如果没有其他工具可能就是一个文件夹一个版本,那样版本一多就乱了
|
||||
- 思考2:公司里的项目一般是多人开发的,要不要共享代码?
|
||||
- 要共享代码,但是传统共享代码,就是微信传递、u盘传递等
|
||||
- 以上问题,都可以由`git`这个工具解决
|
||||
- git是什么?
|
||||
- 一款分布式的版本管理、多人协作工具
|
||||
- 集中式版本管理
|
||||
- 一个团队的代码,全部集中存到一个服务器上。所以如果这个服务器挂,版本都没了
|
||||
- 分布式版本管理
|
||||
- 一个团队的代码,整体是存到服务器上的,但是当某个人下载这份代码,会相当于下载了全部的副本,这就叫分布式。好处:数据不易丢失
|
||||
- 总结:git是什么?
|
||||
- 就是一款分布式的版本管理、多人协作的工具
|
||||
- 作用1:控制和记录版本变化
|
||||
- 作用2:方便多人协作共享代码
|
||||
- .......
|
||||
|
||||
## git下载与安装
|
||||
|
||||
[官网](https://git-scm.com/downloads)
|
||||
|
||||
- 下载完了后就建议下一步下一步直到完成,毛都不要改
|
||||
- 建议:开发软件就建议装在C盘
|
||||
- 如何判断安装成功?
|
||||
- windows系统可以:右键看有没有 `git bash here`,有就代表成功
|
||||
- 或者windows和mac都可以在`终端`(cmd、小黑窗),输入git按回车,如果出现一大坨英文,就代表成功
|
||||
|
||||
## git 配置用户名与邮箱
|
||||
|
||||
- 作用:用来标识自己是谁
|
||||
|
||||
- 配置方法:
|
||||
- 打开小黑窗
|
||||
- 方法1:右键开始菜单,然后点运行,然后输入cmd按回车
|
||||
- 快捷键winows键+r再输入cmd回车
|
||||
- 方法2:
|
||||
- 随便打开一个文件夹,在地址栏上输入cmd按回车
|
||||
- mac直接搜“终端”两个字
|
||||
- 命令如下
|
||||
|
||||
```Bash
|
||||
# git config user.name 你的目标用户名
|
||||
# git config user.email 你的目标邮箱名
|
||||
|
||||
# 使用--global参数,配置全局的用户名和邮箱,只需要配置一次即可
|
||||
# 用户名有意义即可
|
||||
# 邮箱要真实可用
|
||||
git config --global user.name mm
|
||||
git config --global user.email mm@mmm.com
|
||||
|
||||
# 查看配置信息
|
||||
git config --list
|
||||
|
||||
# 取消配置 - 把它们从配置文件里删掉 - 一般不用
|
||||
git config --unset --global user.name
|
||||
git config --unset --global user.email
|
||||
```
|
||||
|
||||
- 总结:
|
||||
- 把`gitee`上的用户名和邮箱配置到git上
|
||||
- 要配置几次?
|
||||
- 1次
|
||||
- 有什么用?
|
||||
- 可以给服务器识别你的身份
|
||||
- 命令为
|
||||
|
||||
```Bash
|
||||
git config --global user.name 用户名
|
||||
git config --global user.email 邮箱
|
||||
```
|
||||
|
||||
## 初始化仓库
|
||||
|
||||
- git作用:可以做版本管理,相当于游戏里的`存档`
|
||||
- 并不是说你电脑上安装了git,那么所有的项目都被管理了
|
||||
- 而是你要给这个项目做**初始化仓库**的操作,才代表这个项目被git管理了
|
||||
- 如果希望一个项目被`git`要用 `git init`初始化这个项目
|
||||
- 步骤:
|
||||
- 来到这个项目文件夹,右键`git bash here`会弹出一个专门给`git`用的小黑窗,而且直接就在这个项目的路径上,输入
|
||||
|
||||
```Bash
|
||||
git init
|
||||
- 敲完会在这个项目文件夹里多一个 `.git`的隐藏文件夹,所以如果以后在项目中看到有这个文件夹,代表这个项目已经被`git`管理,就不用再初始化了
|
||||
```
|
||||
|
||||
- 注意:
|
||||
|
||||
`.git`文件夹不能删了,删了就相当于所有的`版本`都没了,只留下当前代码
|
||||
|
||||
- 有些人即使初始化了也看不到这个文件夹,是因为系统设置了隐藏文件夹不可见,所以可以通过下图设置
|
||||
|
||||

|
||||
|
||||
- 请问一个项目`搞一次`,而且这个项目如果已经有了,就不搞
|
||||
|
||||
## git - 记录改动
|
||||
|
||||

|
||||
|
||||
- 作用:相当于就是产生`存档`
|
||||
- git三大区域:
|
||||
- 工作区:就是指项目代码
|
||||
- 暂存区和仓库区:对我们而言是不可见的
|
||||
- 如果你`工作区`改动了代码,想产生一个`存档`,就要先把改动加到`暂存区`,再加到`仓库区`
|
||||
- 先改代码,然后敲命令
|
||||
|
||||
```Bash
|
||||
# 查看当前状态
|
||||
git status
|
||||
|
||||
# 把当前改动到的所有文件都加到暂存区
|
||||
git add .
|
||||
# 添加某个文件到暂存区 -- 用的少
|
||||
git add 文件名
|
||||
|
||||
# 把暂存区的内容提交到仓库区
|
||||
git commit -m'本次操作的说明文字'
|
||||
```
|
||||
|
||||
- 如果仓库此时没有任何新的改动,`git status`会出现`干净`的提示
|
||||
|
||||

|
||||
|
||||
## git - 快速提交的说明
|
||||
|
||||
```Bash
|
||||
git commit -a -m '提交说明'
|
||||
```
|
||||
|
||||
- 仅能用于本就存在于仓库的文件
|
||||
- 仓库中新建的文件,还是得先加到`暂存区`,再提交到`仓库区`
|
||||
|
||||
## git - 修改已提交的说明文字
|
||||
|
||||
- 如果刚刚提交的文字不小心写错了,可以修改
|
||||
|
||||
```Bash
|
||||
git commit --amend
|
||||
```
|
||||
|
||||
- 此时会进入到编辑模式,默认的编辑器非常难用
|
||||
- 进入后你需要输入`i`,代表进入修改,然后通过键盘上下左右改动光标位置,再把你需要的文字删掉或改掉
|
||||
- 改完后,还得按一下`esc`键,然后英文状态下输入 `:wq`按回车才代表修改完成
|
||||
- ```
|
||||
git config --global core.editor "notepad"
|
||||
```
|
||||
|
||||
|
||||
|
||||
## git - 查看记录
|
||||
|
||||
```Bash
|
||||
# 查看详细记录
|
||||
git log
|
||||
|
||||
# 一行显示每条记录
|
||||
git log --oneline
|
||||
```
|
||||
|
||||
## git - 回滚记录
|
||||
|
||||
- 作用:可以把代码恢复到某个记录的状态
|
||||
- 命令
|
||||
|
||||
```Bash
|
||||
git reset --hard 记录的hash值(记录的id)
|
||||
- 如何获取记录的hash值?
|
||||
git log
|
||||
# 用的多
|
||||
git log --oneline
|
||||
```
|
||||
|
||||
- 注意:
|
||||
- 回滚到某个记录后,你再`git log`只能看到当前记录和它之前的,后面的看不到
|
||||
- 要想看到全部操作记录,用
|
||||
|
||||
```Bash
|
||||
git reflog
|
||||
```
|
||||
|
||||
- 练习:
|
||||
- 要求产生至少3个记录
|
||||
- 能自由切换3个记录的代码
|
||||
- 最后一次一定要回滚到最新记录
|
||||
|
||||
## git - 配置被git忽略的文件
|
||||
|
||||
- 有些文件可能不需要被git管理,例如一些自己手写的笔记,密码等,那就可以配置忽略文件
|
||||
- 需要在仓库根目录,新建 `.gitignore`文件,在这个文件里写需要被忽略的文件,例
|
||||
|
||||
```JavaScript
|
||||
密码.md
|
||||
情书.md
|
||||
小电影
|
||||
```
|
||||
|
||||
- 如果这些文件被git忽略,将不会被提交,也不受git记录变化而变化
|
||||
|
||||
## git - 分支的概念
|
||||
|
||||
- 所谓分支,就是指把当前的代码克隆一份
|
||||
- 这样做的好处是:可以按员工开分支代码,一人负责一个分支,好处是方便管理,以及某一个分支有问题绝对不影响其他分支
|
||||
- git初始化后,默认就会有一个分支叫`master`,我们也称之为主分支
|
||||
- 开发中有个规范:**主分支上不直接进行开发**,它里面只保留经过测试的最稳定的版本代码,开发不会直接在这个分支上进行
|
||||
- 所以还会在主分支的基础上克隆出一份代码(开一个新的分支),分支名叫`develop`或者`dev`,代表是专门用来开发的分支
|
||||
- 再然后在 `develop`基础上又开多个分支,不同的人负责不同的分支,他们写完代码,又各自合并到develop分支,然后经过大量测试和试运行发现很稳定,就合并到 `master`产生一个稳定的版本
|
||||
|
||||

|
||||
|
||||
## git - 分支操作
|
||||
|
||||
- 命令如下
|
||||
|
||||
```Bash
|
||||
# 查看当前所有分支
|
||||
git branch
|
||||
# 新建分支
|
||||
git branch 分支名
|
||||
# 切换分支
|
||||
git checkout 分支名
|
||||
|
||||
# 新建分支并切换过去
|
||||
git checkout -b 分支名
|
||||
```
|
||||
|
||||
- 合并分支一定要小心(要找对分支、确保写的代码都已经提交了),再切换到想合并的目标分支
|
||||
- 比如我想合并到`develop`,我就要先切换到`develop`
|
||||
|
||||
```Bash
|
||||
git checkout develop
|
||||
```
|
||||
|
||||
- 合并语法
|
||||
|
||||
```Bash
|
||||
git merge 分支名
|
||||
# 例如:当前是develop分支,然后你写git merge zs,意思就是把zs分支的代码合并到develop里面
|
||||
git merge zs
|
||||
```
|
||||
|
||||
- 练习要求:
|
||||
- 默认有master分支,需要新建develop分支,再然后在develop基础上创建`dy`、`ls`
|
||||
- `dy`写`dy`,`ls`写`ls`的代码(新建dy.html,ls.html)
|
||||
- 每个分支写完了先提交到当前分支
|
||||
- 然后合并到develop
|
||||
- 等develop有所有代码了,再合并到`master`
|
||||
|
||||
## git - 分支合并冲突
|
||||
|
||||
- 工作中必须学会如何解决冲突
|
||||
|
||||

|
||||
|
||||
- 当不同分支负责人员改动到同一个文件,合并时就会产生冲突
|
||||
|
||||
- 如果冲突了,在vscode中将看到如下界面
|
||||
|
||||

|
||||
|
||||
- 三个选项具体怎么选要看需求
|
||||
|
||||
- 例如1:当前的有bug,所以领导指派李四去修复bug,然后合并过来,肯定是保留李四,也就是保留合并过来的(点第二个按钮)
|
||||
- 例如2: 如果当前分支代码比较多,还包含了要合并过来的分支的代码,就选第一个
|
||||
- 例如3:如果两段代码分别是完成不同的功能,而且这两个功能都要,就选第三个都保留
|
||||
|
||||
## git - 删除分支
|
||||
|
||||
```Bash
|
||||
git branch -d 分支名
|
||||
# 强行删
|
||||
git branch -D 分支名
|
||||
```
|
||||
|
||||
- 如果你要删某个分支,你要确保不在这个分支上,才可以删
|
||||
- 如果被删的分支有新的记录,但是还没有合并,那么也删不掉,用`git branch -D 分支名`
|
||||
|
||||
|
||||
|
||||
## 远程仓库 - 建库、删库
|
||||
|
||||
- 建库
|
||||
|
||||

|
||||
|
||||
- 删库
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 远程仓库 - 添加团队成员
|
||||
|
||||

|
||||
|
||||
## 远程仓库 - 推送
|
||||
|
||||
- 让本地仓库跟远程仓库建立链接
|
||||
|
||||
```Bash
|
||||
git remote add 起一个远程仓库名字 仓库地址
|
||||
git remote add origin https://gitee.com/xpzll/viewdemo95.git
|
||||
```
|
||||
|
||||
- 推送代码到远程仓库
|
||||
|
||||
```Bash
|
||||
git push -u origin "master"
|
||||
```
|
||||
|
||||
- 以上两段命令,gitee上可以复制
|
||||
- 第一次推送会需要登录,但是这个登录只要成功一次,后面都不用登录
|
||||
|
||||

|
||||
|
||||
## 远程仓库 - 开源
|
||||
|
||||

|
||||
|
||||
## 远程仓库 - 多远程仓库连接
|
||||
|
||||
```Bash
|
||||
# 建立链接
|
||||
git remote add origin 仓库地址
|
||||
```
|
||||
|
||||
- remote是远程的意思
|
||||
- add是添加的意思
|
||||
- origin只是给这个远程仓库的连接起了一个名字叫origin
|
||||
|
||||
```Bash
|
||||
# 把本地仓库推送到 origin 连接的远程仓库,并且也把远程仓库分支叫为master
|
||||
git push -u origin "master"
|
||||
```
|
||||
|
||||
- 所以如果你一个本地仓库,要推送多个远程仓库,要建立新的连接,而新的连接名字不能重复
|
||||
|
||||
```Bash
|
||||
# 也就是说连接到这个新仓库的别名叫xx
|
||||
git remote add xx 新仓库地址
|
||||
|
||||
## 意思是把本地仓库推送到xx这个连接的远程仓库
|
||||
git push -u xx "master"
|
||||
```
|
||||
|
||||
## 远程仓库 - 删除连接
|
||||
|
||||
- 工作中一般一个本地仓库只连接一个远程仓库
|
||||
- 问题来了如果之前我在本地建立了一个连接,而且连接名字叫origin,后面再建立连接除非改名字,不然还叫origin会报错
|
||||
- 但是我就是想用origin,就把之前的origin删掉
|
||||
|
||||
```Bash
|
||||
git remote remove origin
|
||||
```
|
||||
|
||||
## 远程仓库 - 克隆
|
||||
|
||||
- 作用:把远程仓库的代码克隆下来
|
||||
|
||||
```Bash
|
||||
# 要么这个仓库是开源,要么你是这个仓库的成员
|
||||
git clone 仓库地址
|
||||
```
|
||||
|
||||
## 远程仓库 - 拉取
|
||||
|
||||
- 作用:可以把远程仓库最新的代码拉取下来
|
||||
|
||||
```Bash
|
||||
git pull
|
||||
```
|
||||
|
||||
## 解决推送冲突
|
||||
|
||||

|
||||
|
||||
- 解决办法:
|
||||
- 先`git pull`拉取最新代码
|
||||
- 再`git push`
|
||||
- 注意:
|
||||
- 为什么以后只要写 `git push`,因为完整写法是之前空仓库用一次就够了,后面都不是空仓库,直接`push`
|
||||
|
||||
## windows的凭据管理器
|
||||
|
||||
- 它把密码保存到windows的凭据管理器里了
|
||||
- 如果你不想用了,就去里面删除,如果删除了下次还得输入
|
||||
- 最多就是去里面修改它,因为我可能把gitee账号密码给改了,那这里也得修改
|
||||
- 或者如果公司刚好也是用gitee,而且公司没给你发电脑,你用的还是自己的电脑,而且还要满足公司的gitee没用你的邮箱,而是直接给你指派了邮箱,这时候就去要修改
|
||||
|
||||
## SSH私钥与公钥方式
|
||||
|
||||
- 因为有人的电脑因为系统原因是没有凭据管理的,那就意味着每次都要输入账号和密码
|
||||
|
||||
- 所以还有一种方式叫使用`私钥`配合`公钥`的形式来免登录
|
||||
|
||||

|
||||
|
||||
- 在任意小黑窗里输入如下命令
|
||||
|
||||
```Bash
|
||||
ssh-keygen -t ed25519 -C "你的邮箱地址"
|
||||
```
|
||||
|
||||
- 以后去到公司,公司负责人会问你要你的邮箱,或者问你要公钥
|
||||
- 如果是要邮箱,就要用`https`,然后输入账号和密码来登录
|
||||
- 如果问你要公钥,你就在电脑上生成公钥和私钥,再把公钥部分的内容发给负责人
|
||||
- 公钥文件以 `.pub`结尾,去`~/.ssh`文件夹找文件
|
||||
- ~代表自己电脑的个人文件夹
|
||||
- 例如: `C:\Users\你电脑的用户名\.ssh`
|
||||
- 如果是账号密码登录用 `https`的仓库地址
|
||||
- 如果是公钥用`ssh`的仓库地址
|
||||
Reference in New Issue
Block a user