Git的使用
一、Git介绍
1. 什么是git
Git 是一款免费、开源的分布式版本控制管理系统,用于敏捷高效地处理任何或大或小的项目。
2. git的作用
版本控制系统在项目开发中作用重大,主要的功能有以下几点:
- 代码备份
- 版本回退
- 协作开发
- 权限控制
二、安装Git
1. 注意事项
- 不要安装在中文目录
- 不要使用桌面管理软件
- 安装一路下一步,中间可以设置安置路径
- 安装完成后,在桌面单击鼠标右键,看到如下两行即为安装成功
2. Linux命令
Linux 是一套开源免费的操作系统,与系统的交互通常用命令来实现,常用的命令有:
cd : 进入某一个文件内
cd.. : 回到上一级,Tab键自动补全
ls : 查看文件夹下的文件
clear : 清屏
mkdir : 创建文件夹,可以一次性创建多个
touch : 创建一个文件,后加文件名
rm : 删除文件,后加文件名
rm dir -r : 删除文件夹选项
rm dir -f : 强制删除文件夹
mv : 移动文件,后加文件名,相当于剪切
cat : 查看文件内容
ctrl + c : 取消命令
Tab : 自动补齐路径
* : 代表所有,*.css *.js
3. 编辑器VIM
Vim 是一款命令行下的文本编辑器,编辑方式跟图形化编辑器不同。
vim : 编辑文件,后加文件名,文件不存在则创建
i : 进入编辑模式(i insert)
ESC + :wq : 保存并退出
ESC + :q! : 不保存并退出
三、 Git常规操作
1. git三个区
要对某个项目使用git进行管理,需要使用git init命令初始化git仓库,git init会在当前目录生成一个隐藏文件.git,不要修改这个文件的任意东西。
git仓库分三个区:
工作区:书写代码的地方,工作的目录就叫工作区。
暂存区:暂时存储的区域,需要先从工作区提交到暂存区,暂存区的目的是避免误操作。
仓库区:将保存在暂存区的内容永久转储到git仓库,生成版本号,能回退到某一个具体的版本。
2. git基本命令
git init:初始化git仓库,使用git对某个项目进行管理。
// 1.初始化仓库,在当前目录下生成一个隐藏文件夹.git
git init
git add:将工作区添加到暂存区。
// 1.将index.html添加到暂存区
git add index.html
// 2.将css目录下所有的文件添加到暂存区
git add css
// 3.添加当前目录下所有文件
git add .
git add --all
git commit:将文件由暂存区添加到仓库区,生成版本号(存档)。
// 1.将文件从暂存区提交到仓库
git commit -m "提交说明"
// 2.如果不写提交说明,会进入vi编辑器,提交不成功。
// 3.需要使用vi输入内容,vi编辑器常用操作 :q!来退出
git commit
git config:如果是第一次提交,需要配置提交者信息。
// 1.你的目标用户名
git config user.name
// 2.你的目标邮箱名
git config user.email
// 3.使用--global参数,配置全局的用户名和邮箱名,只需要配置一次
git config --global user.name 皮皮虾
git config --global user.email 8123166761@qq.com
如果之前配置过了,想清空的话,可以使用:
git config --global user.name ''
git config --global user.email ''
git status:查看文件状态。
红色表示工作区中的文件需要提交
绿色表示暂存区中的文件需要提交
git log:查看提交日志。
git log --oneline:简洁的日志信息。
git reflog:查看所有的版本信息,包括回退的操作。
3. git重置或版本回退
git reset:版本回退,将代码恢复到已经提交的某一个版本。
git reset --hard 版本号:将代码回退到有一个指定的版本。
// 1.当使用了git reset命令后,版本回退,使用git log只能看到当前版本之前的信息
// 2.使用git reflog可以查看所有的版本信息
4. git忽略文件
在仓库或者项目代码中,有些文件是不想被git管理的,比如数据的配置密码、写代码的一些思路、node_modules等。git可以通过配置可以忽略一些文件,这样的文件就可以不用提交了。
在仓库或者当前项目的根目录创建一个.gitignore的文件,文件名是固定的。
将不需要的被git管理的文件路径添加到.gitignore中。
// 1.忽视idea.txt文件
idea.txt
// 2.忽视css下的index.js文件
css/index.js
// 3.忽视css下的所有的js文件
css/*.js
// 4.忽视css文件夹
css
四、 Git分支操作
1. git分支命令
在git中,分支实质上仅仅是一个指针,每次代码提交后,这个分支指针就会向后移动,保证一直指向最后一次提交的的版本。git中使用HEAD指向当前分支。
git branch 分支名称:创建分支,分支中的代码都在创建与当前分支的内容完全相同,相当于复制了一份。
// 1.git在第一次提交时,就有一个叫master的主分支
// 2.创建了一个叫dev的分支
git branch dev
git branch:可以查看所有的分支。
// 1.在当前分支的前面会有一个 *
// 2.在git中,有一个特殊指针HEAD,永远会指向当前分支
git checkout 分支名称:切换分支,HEDA指针指向了另一个分支。
// 1.在当前分支的任何操作,都不会应影响到其它的 分支,除非进行了分支合并
// 2.提交代码时,会产生版本号,当前分支指向最新的版本号
git checkout -b 分支名称:创建并切换分支。
// 创建分支会做两件事:
// 1.创建一个新分支
// 2.把HEDA指针指向当前的分支
git branch -d 分支名称:可以删除分支。
// 1.不能在当前分支删除分支,需要切换到其他分支才能删除
// 2.master分支时可以删除的,但不推荐那么做
git merge 分支名称:将其它分支的内容合并到当前分支。
// 1.在master分支中执行,git merge dev将dev分支中的代码合并到master分支
2. git合并冲突
对于同一个文件,如果有多个分支需要合并时,容易出现冲突。
合并分支时,如果出现冲突,只能手动处理,再次提交,一般做法,把自己的代码放到冲突代码的后面即可。
五、 Git远程仓库
1. git与github
git与github没有直接关系。
// 1.git是一个版本控制工具
// 2.github是一个代码托管平台,开源社区。
// 3.gitee是一个国内的代码托管平台和github类似。
git clone:克隆远程仓库的代码到本地。
// 1.从远程仓库克隆到本地的代码中包含了.git目录
// 2..git目录保存着所有版本信息
// 3.npm install下载项目所需要的依赖
git clone 远程仓库地址 自定义名称:下载远程仓库代码并自定义项目名字。
git push:将本地仓库中代码提交到远程仓库。
git push 仓库地址 master:提交代码到远程仓库,master分支必须写。
// 1.第一次提交需要填写github的用户名和密码
// 2.现在又了个人token之后,就不需要用户名和密码了
// 3.现在github代码托管平台,已经将主分支名称改成main
git push https://github.com/haiten123/mCde205.git main
git pull:将远程的代码下载到本地,并和本地代码进行对比。
// 1.通常在push前,需要pull一次
git remote:给仓库地址设置一个别名。
// 1.给远程仓库设置一个别名
git remote add 仓库别名 仓库地址
git remote add shangpinhui git@github.com:你的注册名/test.git
// 2.使用如下来推送数据
git push shangpinhui main
// 3.如果第一次提交是如下 代码的话,那么接下来
git push -u shangpinhui main // 第一次提交时的执行代码
// 4.后续使用此命令即可提交
git push
// 5.删除这个别名
git remote remove
git push 远程仓库地址 分支名称 -f:代码推送冲突,可以使用强制推送(force)。
git restore 文件名称:找回误删的文件。
git restore 文件名称
OR:
git restore * // 找回所有已删文件
六、 免密提交
1. SSH免密登录
git支持多种数据传输协议:
- https协议:
https://github.com/你的注册名/test.git
需要输入用户名和密码- ssh协议:
git@github.com:你的注册名/test.git
可以配置免密码登录
每次push或者pull代码,如果使用https协议,那么都需要输入用户名和密码进行身份的确认,非常麻烦。
- github为了账户的安全,需要对每一次push请求都要验证用户的身份,只有合法的用户才可以push
- 使用ssh协议,配置ssh免密码,可以做到免密码往github推送代码
2. SSH免密登录配置
1.创建SSH Key:ssh-keygen -t rsa
2.在文件中C:\用户\当前用户名\
3.找到 .ssh 文件夹
4.文件夹中有两个文件:
私钥:id_rsa
公钥:id_rsa.pub
5.将公钥添加到github当中
6.在 github -> settings -> SSH and GPG keys页面中,新创建SSH key
7.粘贴公钥id_rsa.pub内容到对应文本框中
8.在github中新建仓库或者使用现在仓库
9.拿到git@github.com:用户名/仓库名.git
10.此后,再次SSH方式与github“通信”,不用输入密码确认身份了