mirror of
http://47.106.207.27:3000/Jeremy_liu/AI0814_jiaoan_public.git
synced 2026-09-27 06:14:14 +08:00
14 KiB
14 KiB
git介绍
- 思考1:任何项目,是否有多个版本?如果是,每个版本的代码是否需要保存?
- 有多个版本,每个版本的代码都要保存。如果没有其他工具可能就是一个文件夹一个版本,那样版本一多就乱了
- 思考2:公司里的项目一般是多人开发的,要不要共享代码?
- 要共享代码,但是传统共享代码,就是微信传递、u盘传递等
- 以上问题,都可以由
git这个工具解决 - git是什么?
- 一款分布式的版本管理、多人协作工具
- 集中式版本管理
- 一个团队的代码,全部集中存到一个服务器上。所以如果这个服务器挂,版本都没了
- 分布式版本管理
- 一个团队的代码,整体是存到服务器上的,但是当某个人下载这份代码,会相当于下载了全部的副本,这就叫分布式。好处:数据不易丢失
- 总结:git是什么?
- 就是一款分布式的版本管理、多人协作的工具
- 作用1:控制和记录版本变化
- 作用2:方便多人协作共享代码
- .......
git下载与安装
- 下载完了后就建议下一步下一步直到完成,毛都不要改
- 建议:开发软件就建议装在C盘
- 如何判断安装成功?
- windows系统可以:右键看有没有
git bash here,有就代表成功 - 或者windows和mac都可以在
终端(cmd、小黑窗),输入git按回车,如果出现一大坨英文,就代表成功
- windows系统可以:右键看有没有
git 配置用户名与邮箱
-
作用:用来标识自己是谁
-
配置方法:
- 打开小黑窗
- 方法1:右键开始菜单,然后点运行,然后输入cmd按回车
- 快捷键winows键+r再输入cmd回车
- 方法2:
- 随便打开一个文件夹,在地址栏上输入cmd按回车
- mac直接搜“终端”两个字
- 方法1:右键开始菜单,然后点运行,然后输入cmd按回车
- 打开小黑窗
-
命令如下
# 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次
- 有什么用?
- 可以给服务器识别你的身份
- 命令为
- 把
git config --global user.name 用户名
git config --global user.email 邮箱
初始化仓库
- git作用:可以做版本管理,相当于游戏里的
存档 - 并不是说你电脑上安装了git,那么所有的项目都被管理了
- 而是你要给这个项目做初始化仓库的操作,才代表这个项目被git管理了
- 如果希望一个项目被
git要用git init初始化这个项目 - 步骤:
- 来到这个项目文件夹,右键
git bash here会弹出一个专门给git用的小黑窗,而且直接就在这个项目的路径上,输入
- 来到这个项目文件夹,右键
git init
- 敲完会在这个项目文件夹里多一个 `.git`的隐藏文件夹,所以如果以后在项目中看到有这个文件夹,代表这个项目已经被`git`管理,就不用再初始化了
-
注意:
.git文件夹不能删了,删了就相当于所有的版本都没了,只留下当前代码
git - 记录改动
- 作用:相当于就是产生
存档 - git三大区域:
- 工作区:就是指项目代码
- 暂存区和仓库区:对我们而言是不可见的
- 如果你
工作区改动了代码,想产生一个存档,就要先把改动加到暂存区,再加到仓库区 - 先改代码,然后敲命令
# 查看当前状态
git status
# 把当前改动到的所有文件都加到暂存区
git add .
# 添加某个文件到暂存区 -- 用的少
git add 文件名
# 把暂存区的内容提交到仓库区
git commit -m'本次操作的说明文字'
git - 快速提交的说明
git commit -a -m '提交说明'
- 仅能用于本就存在于仓库的文件
- 仓库中新建的文件,还是得先加到
暂存区,再提交到仓库区
git - 修改已提交的说明文字
- 如果刚刚提交的文字不小心写错了,可以修改
git commit --amend
- 此时会进入到编辑模式,默认的编辑器非常难用
- 进入后你需要输入
i,代表进入修改,然后通过键盘上下左右改动光标位置,再把你需要的文字删掉或改掉 - 改完后,还得按一下
esc键,然后英文状态下输入:wq按回车才代表修改完成 -
git config --global core.editor "notepad"
- 进入后你需要输入
git - 查看记录
# 查看详细记录
git log
# 一行显示每条记录
git log --oneline
git - 回滚记录
- 作用:可以把代码恢复到某个记录的状态
- 命令
git reset --hard 记录的hash值(记录的id)
- 如何获取记录的hash值?
git log
# 用的多
git log --oneline
- 注意:
- 回滚到某个记录后,你再
git log只能看到当前记录和它之前的,后面的看不到 - 要想看到全部操作记录,用
- 回滚到某个记录后,你再
git reflog
- 练习:
- 要求产生至少3个记录
- 能自由切换3个记录的代码
- 最后一次一定要回滚到最新记录
git - 配置被git忽略的文件
- 有些文件可能不需要被git管理,例如一些自己手写的笔记,密码等,那就可以配置忽略文件
- 需要在仓库根目录,新建
.gitignore文件,在这个文件里写需要被忽略的文件,例
密码.md
情书.md
小电影
- 如果这些文件被git忽略,将不会被提交,也不受git记录变化而变化
git - 分支的概念
- 所谓分支,就是指把当前的代码克隆一份
- 这样做的好处是:可以按员工开分支代码,一人负责一个分支,好处是方便管理,以及某一个分支有问题绝对不影响其他分支
- git初始化后,默认就会有一个分支叫
master,我们也称之为主分支 - 开发中有个规范:主分支上不直接进行开发,它里面只保留经过测试的最稳定的版本代码,开发不会直接在这个分支上进行
- 所以还会在主分支的基础上克隆出一份代码(开一个新的分支),分支名叫
develop或者dev,代表是专门用来开发的分支 - 再然后在
develop基础上又开多个分支,不同的人负责不同的分支,他们写完代码,又各自合并到develop分支,然后经过大量测试和试运行发现很稳定,就合并到master产生一个稳定的版本
git - 分支操作
- 命令如下
# 查看当前所有分支
git branch
# 新建分支
git branch 分支名
# 切换分支
git checkout 分支名
# 新建分支并切换过去
git checkout -b 分支名
- 合并分支一定要小心(要找对分支、确保写的代码都已经提交了),再切换到想合并的目标分支
- 比如我想合并到
develop,我就要先切换到develop
- 比如我想合并到
git checkout develop
- 合并语法
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
- 默认有master分支,需要新建develop分支,再然后在develop基础上创建
git - 分支合并冲突
- 工作中必须学会如何解决冲突
-
当不同分支负责人员改动到同一个文件,合并时就会产生冲突
-
如果冲突了,在vscode中将看到如下界面
-
三个选项具体怎么选要看需求
- 例如1:当前的有bug,所以领导指派李四去修复bug,然后合并过来,肯定是保留李四,也就是保留合并过来的(点第二个按钮)
- 例如2: 如果当前分支代码比较多,还包含了要合并过来的分支的代码,就选第一个
- 例如3:如果两段代码分别是完成不同的功能,而且这两个功能都要,就选第三个都保留
git - 删除分支
git branch -d 分支名
# 强行删
git branch -D 分支名
- 如果你要删某个分支,你要确保不在这个分支上,才可以删
- 如果被删的分支有新的记录,但是还没有合并,那么也删不掉,用
git branch -D 分支名
远程仓库 - 建库、删库
- 建库
远程仓库 - 添加团队成员
远程仓库 - 推送
- 让本地仓库跟远程仓库建立链接
git remote add 起一个远程仓库名字 仓库地址
git remote add origin https://gitee.com/xpzll/viewdemo95.git
- 推送代码到远程仓库
git push -u origin "master"
- 以上两段命令,gitee上可以复制
- 第一次推送会需要登录,但是这个登录只要成功一次,后面都不用登录
远程仓库 - 开源
远程仓库 - 多远程仓库连接
# 建立链接
git remote add origin 仓库地址
- remote是远程的意思
- add是添加的意思
- origin只是给这个远程仓库的连接起了一个名字叫origin
# 把本地仓库推送到 origin 连接的远程仓库,并且也把远程仓库分支叫为master
git push -u origin "master"
- 所以如果你一个本地仓库,要推送多个远程仓库,要建立新的连接,而新的连接名字不能重复
# 也就是说连接到这个新仓库的别名叫xx
git remote add xx 新仓库地址
## 意思是把本地仓库推送到xx这个连接的远程仓库
git push -u xx "master"
远程仓库 - 删除连接
- 工作中一般一个本地仓库只连接一个远程仓库
- 问题来了如果之前我在本地建立了一个连接,而且连接名字叫origin,后面再建立连接除非改名字,不然还叫origin会报错
- 但是我就是想用origin,就把之前的origin删掉
git remote remove origin
远程仓库 - 克隆
- 作用:把远程仓库的代码克隆下来
# 要么这个仓库是开源,要么你是这个仓库的成员
git clone 仓库地址
远程仓库 - 拉取
- 作用:可以把远程仓库最新的代码拉取下来
git pull
解决推送冲突
- 解决办法:
- 先
git pull拉取最新代码 - 再
git push
- 先
- 注意:
- 为什么以后只要写
git push,因为完整写法是之前空仓库用一次就够了,后面都不是空仓库,直接push
- 为什么以后只要写
windows的凭据管理器
- 它把密码保存到windows的凭据管理器里了
- 如果你不想用了,就去里面删除,如果删除了下次还得输入
- 最多就是去里面修改它,因为我可能把gitee账号密码给改了,那这里也得修改
- 或者如果公司刚好也是用gitee,而且公司没给你发电脑,你用的还是自己的电脑,而且还要满足公司的gitee没用你的邮箱,而是直接给你指派了邮箱,这时候就去要修改
SSH私钥与公钥方式
ssh-keygen -t ed25519 -C "你的邮箱地址"
- 以后去到公司,公司负责人会问你要你的邮箱,或者问你要公钥
- 如果是要邮箱,就要用
https,然后输入账号和密码来登录 - 如果问你要公钥,你就在电脑上生成公钥和私钥,再把公钥部分的内容发给负责人
- 公钥文件以
.pub结尾,去~/.ssh文件夹找文件 - ~代表自己电脑的个人文件夹
- 例如:
C:\Users\你电脑的用户名\.ssh - 如果是账号密码登录用
https的仓库地址 - 如果是公钥用
ssh的仓库地址













