git的基本操作(git的详细操作)
01Git介绍
目标
掌握git的基本定义和
Git是什么
Git版本控制系统是一个分布式的系统,是用来保存工程源代码历史状态(游戏存档)的命令行工具 Git是一个命令行(小黑窗)工具 ,用于版本控制(存档器)Git的作用是什么?
版本管理工具:说人话就是可以记录你敲代码的每一个环节(类似于玩游戏存档)Git应用场景介绍
多人开发代码管理目前我们多人代码的时候 ,想把代码合并一起是利用最原始的复制粘贴操作 。有了git之后 ,可以一键搞
异地开发代码管理实际开发中 ,我们上班可能会用公司电脑敲代码 。有时候回到家里用自己电脑偷偷加个班 ,以前的做法是备一个U盘 ,复制粘贴。有了git之后 ,直接一键搞定 。
版本管理
比如我现在公司网站已经做出来了1.0版本在使用 ,现在计划增加一些新功能 ,但是这个功能不稳定需要经过开发和测试环节,为了不影响现有的稳定版本 。以前的做法是把稳定版本单独拷贝一份增加功能 ,等做好之后再把以前版本给替换掉 。有了git之后可以一键搞定 。 版本回滚:
比如这周产品经理提出一个功能 ,我辛辛苦苦写了一周代码 。
到了下周,产品经理说这个功能不做了 ,叫我删掉改成其他功能 。
我们把代码删掉之后按照产品经理要求又辛辛苦苦写了一周代码 。到了下下周 ,产品经理说这个功能还是没有上次那个好,还是改成上周的吧…………别着急 ,有了git之后 ,一键搞定 。
版本管理工具还有其他的么?
git:目前使用最多的版本管理工具 svn:也有公司在用 ,用法与git类似(相当于腾讯视频和优酷视频)小结
1. git是什么?
程序员必备的代码版本管理软件
02Git安装流程
目标
掌握安装流程
下载
地址:Git - Downloads
安装
全程默认点击即可 ,不用修改其他选项 (建议:不要安装在C盘之外的位置)
检测是否安装成功
如果在电脑任意文件夹中点击右键 ,能够出现Git命令选项 ,则说明安装成功
mac系统
1.首先使用自带的终端 ,输入 : git --version , 然后回车如果看到版本号 。说明已经安装
2.如果没有看到版本号 ,可以在终端输入: brew install git , 然后回车等待安装。 安装成功之后重复步骤1 ,检查是否安装成功
03配置用户信息
目标
掌握配置用户信息的方式
为啥要配置
安装完git这个软件之后,要做的第一件事情就是设置自己的 用户名 和 邮件地址 ,这样我们就可以知道哪些人提交了什么代码 。
配置用户信息命令
git config --global user.email "你的码云账号邮箱"
git config --global user.name "你的码云用户名(可以随便写)"
注意:
通过 git config --global user.name 和 git config --global user.email 配置的用户名和邮箱地址 ,会被写入到 C:/Users/用户名文件夹/.gitconfig 文件中 。这个文件是 Git 的全局配置文件,配置一次即可永久生效。 上面的邮箱和用户名可以不是真实的 ,也可以后面自行修改查看所有的全局配置
git config --list --global
查看所有的全局配置
git config --list --global
查看指定的全局配置项
git config user.name
git config user.email
04使用git的基本工作过程
目标
掌握git的基本工作流程
9个常见操作
程序员比较高频的操作有9个 。具体如下 。
1.新建项目文件夹(只做一次) 2.进入文件夹 (重要) 3.初始化仓库:git init(只做一次) 4.编码 5.添加文件信息: git add . 6.确认添加信息:git commit -m"描述信息" 7.查看详细日志信息:git log 8.查看简略日志信息:git log --oneline 9.版本回滚:git reset --hard 版本号第123步一个项目只需要一次 ,456步频繁使用,789步偶尔会用
1.新建文件夹
如果是老项目(已经存在的项目) ,这步可以省略了。
2.启动进入git命令
进入这个文件夹 , 点击右键选择Git Bash Here
打开git命令行工具
(小蓝窗)
3. 初始化项目
在小蓝窗输入 git init
注意:
如果是老项目 ,这一步就省略了 。 .git目录可能是隐藏的 ,需要设置为可见才能看到4. 编码(程序员的日常工作)
在这个目录下正常做开发:创建文件 ,修改文件内容....
例如: 添加 index.txt ,并写入一些内容(任意内容均可)
5. 添加存档
命令:
git add .
注意:这个命令只是将文件信息添加到暂存区 ,还没有真正存档 ,需要使用git commit命令确认存档才可以
6. 确认存档
命令 git commit -m "说明"
图示
以上流程是实际开发中主要使用流程
小结
git add .
git commit -m "操作内容"
05git的三个区
目标
理解git三个区的作用 ,掌握git add commit的用法
三个区
工作区: 处理工作的区域 暂存区: 临时存放的区域 本地git仓库: 最终的存放区域对比理解
生活
文件夹
工作区: 在你电脑里看到的目录 暂存区: 在.git文件夹内的index中 (二进制记录) 版本库: 指的整个.git文件夹 (也认为是本地仓库)在代码中的体现
三个区与git命令
06查看提交信息
目标
掌握常见的查看提交信息的命令
查看提交记录
如下两个命令用来查看提交记录
git log git log --oneline git reflog:这个命令可以查看你所有的提交的记录07查看文件状态
目标
掌握查看文件状态的命令,能理解文件的4种状态
内容
没有被托管的文件: 未跟踪
已被托管(曾经add,commit过)的文件:已修改 ,已暂存 ,已提交
命令
# 查看仓库文件的状态 git status # 查看简略版信息 git status -s改动文件之后:
新添加文件:
未跟踪(新增的文件) 已修改(文件曾经被Git记录过了,然后在工作区对他进行了修改) 已暂存(新增的文件 ,添加到暂存区之后的状态) 已提交(nothing to commit) 表示没有什么东西可以提交了;即所有的内容都已经提交给git仓库了 。 有的文档也把这个状态叫做 未修改 ,意思是自上次提交过后,代码还没有修改过练习
自己操作文件 ,能看到4种状态 。
08代码恢复
目标
掌握代码恢复的方法
从工作区恢复
改动了代码 ,想放弃修改(此时并没有add)
git status
git restore 文件名
从暂存区恢复
改动了代码 ,也add了 ,此时想放弃 。
git reset HEAD 文件名
git checkout -- 文件名
整体回滚
回滚之后
git reset --hard 提交流水号
会导致log信息不全 。改用 git reflog
08文件_git忽略文件
目标
了解git忽略文件的作用和配置
讲解
有的时候, 我们某些文件/文件夹, 不想让git进行跟踪管理 这种场景下, 我们需要在.git文件夹隔壁, 来个叫做 .gitignore (固定名字)的忽略文件, 并写入忽略规则 可以编写如下这些规则 # 井号表示注释 # 忽略某个指定文件 password.txt # 忽略文件夹 css # 忽略文件夹下的某个文件 css/index.js # 忽略文件夹下某类文件 css/*.js 然后根目录新建password.txt, 查看 git追踪到了哪些变化 git status 发现只新增了.gitignore, 符合规则的都忽略掉了小结
如何设置git忽略文件? 在.git文件夹隔壁建立一个.gitignore文件, 写入相关语法配置即可忽略此仓库文件夹下符合规则的文件夹/文件09远端仓库介绍
目标
什么是远端仓库
远端(远程)仓库其实就是远程的git服务器 ,帮我们存储代码的服务器 。
本地git存储:一旦你电脑丢了或者硬盘损坏 ,直接扑街 远程git存储:如果你电脑坏了换了一个新的 ,只需要从网上重新下载即可常见的远程仓库有哪些?
(1)github:免费 。国外服务器 ,访问不稳定 。"全球最大的同性交友网站"
学习时候可以用 ,工作中有的小公司为了省钱也会用(2)码云:免费 。国内服务器。
(3)gitlab:
(4)私服:公司自己机房的服务器(工作中遇到)
以上远程仓库使用流程几乎一致 。
远程仓库的作用
多人协作
远程仓库的使用流程
leader(仓库的创建者,有最高的权限)
登录远程仓库 ,建立空项目;
给成员添加权限
成员
登录远程仓库 把代码拉到本地 本地编辑 ,保存,提交代码 同步到远程小结
10远程仓库使用示例
目标
以码云为例 ,掌握远程仓库的使用
1.在码云网站
建立仓库
2.将远程仓库克隆到本地
git clone 仓库网址
git clone:克隆 ,将整个远程仓库克隆到本地
这个命名相当于拉取所有的代码(将整个远程仓库文件夹copy到你的本地) 这个命令一般只会在项目开始的时候执行一次它会在本地创建目录 。
3.本地编写代码
git add . 与git commit -m“添加文件信息“
4.将本地代码推送到远程
git push
5.将远程代码拉取到本地
git pull :拉取,用于多人开发。比如别人写的代码文件提交到远程仓库 ,通过这个命令就可以将远程仓库代码拉取到本地
这个命令不会拉取所有代码 ,只是拉取远程上面新增的代码(把别人写的代码合并到你的本地) 这个命令 ,在多人开发的时候建议每天上班前执行一次11远端仓库多人开发配置流程
目标
掌握多人开发的基本流程
内容
leader(仓库的创建者)邀请其他开发者小花 小花成为开发者 小花clone 代码 小花正常开发项目 git add . git commit -m "" 小花提交代码 git push整体图示
git pull 的常见错误
1. 在pull之前要记得commit
合并冲突合并:把两个版本的代码合在一起 。
冲突:合并失败 。
例如:
A同学改了a.txt的第一行 ,提交到了远程; B同学本地仓库也改了a.txt的第一行 ,并commit B同学git pull(从远程拉下来) 出现错误:两个人改了同一地方。处理:
手动解决问题 。看看使用什么代码 add commit git pull git push12远程仓库SSH配置
目标
掌握远端仓库的SSH配置方式
两种访问方式
远程仓库有两种访问方式 ,分别是HTTPS与SSH
HTTPS:零配置;但是每次访问仓库时 ,需要重复输入的账号和密码才能访问成功(现在不需要了) SSH:需要进行额外的配置;但是配置成功后 ,每次访问仓库时 ,不需重复输入账号和密码 。公司中也实际开发推荐使用SSH方式访问远程仓库SSH 介绍
加密通讯协议
SSH key 的作用:实现本地仓库和 Github 之间免登录的加密数据传输 。
SSH key 的好处:免登录身份认证 、数据加密传输 。
SSH key 由两部分组成,分别是:
id_rsa(私钥文件 ,存放于客户端的电脑中即可) id_rsa.pub(公钥文件 ,需要配置到远端服务器 中)SSH配置流程
打开 Git Bash 输入命令:ssh-keygen -t rsa -C 邮箱 这里的邮箱要与 全局配置 (git config --global user.email) 以及 码云上的登记邮箱一致 连续敲击 3 次回车,即可在 C:\Users\用户名文件夹.ssh 目录中生成 id_rsa 和 id_rsa.pub 两个文件 使用记事本打开 id_rsa.pub 文件 ,复制里面的文本内容 在你的远程仓库网址, 点击头像 -> 设置 -> SSH 公钥 -> 粘贴工作过程
小结
11分支介绍
问题导入
比如你的网站第一个版本已经做好发布了 ,功能也很稳定 。现在准备新增一些功能开发2.0版本,问题是:如何去写代码?
如果在1.0的版本的基础上继续开发 ,那如何确保1.0的代码稳定呢? 程序员的做法:切分支 。
图示:
理解分支
分支的本质是:一个指向某个版本的链接 。
分支的作用是什么? 可以独立开发和维护提交版本记录, 和别的分支互不影响, 尤其多人开发同一个项目, 可以分别控制自己的代码 分支内功能开发完毕后, 需要最后一步做什么? 合并回到主分支, 保证最后主分支有所有模块的代码, 最后统一交付分支的应用场景
开发时按功能模块切分支 例如:有5个页面 ,切5个分支 有bug时切分支开解决buggit分支相关命令
Git命名
作用
详细描述
git branch
查看当前工作分支
git branch 分支名
新建子分支
新建一个小号存档,把当前存档备份到小号中
git checkout 分支名
切换工作分支
切换当前的账号(换小号刷装备)
git merge分支名
合并分支
把子分支代码合并到主分支(小号刷得装备移到大号上面)
git branch -d 分支名
删除子分支(慎用)
把某一个分支删除
12.分支相关的典型操作
1. 查看分支
命令:git branch
功能:查看所有的分支
说明:项目在初始时 ,就会有一个默认的分支 ,名字是:master 。表示主分支 。
2.新建分支
命令: git branch 分支名
功能:创建新分支
示例: git branch v2
图示:
3.切换分支
命令:git checkout 分支名 (创建分支之后 ,你的代码默认还是在主分支 ,需要切换工作分支到子分支)
功能:切换分支
示例:git checkout v2
图示:
注意:切换分支时 ,要先commit
4.在新的分支上进行编码
提交代码的时候 ,指针也在移动
// 改代码
git add .
git commit -m "提交3"
// 改代码
git add .
git commit -m "提交4"
5.合并分支
格式: git merge 分支名
注意:merge之前 ,必须commit
合并:假设当前在master分支,把v2分支的代码合并过来。合并的目的:是master中的代码和v2的代码是一样 。让master上也具有v2的代码 。
6.删除分支
格式:git branch -d 分支名
示例:git branch -d v2
注意:
删除分支 ,也需要切换当前工作分支为其他分支 删除分支 ,不会导致代码丢失创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!