Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
前言
首先你需要拥有git
下载地址:Git for Windows。
下载后连续点击next完成安装
看到这个点击后安装成功
右击桌面
然后出现下图所示
看到这证明安装成功。
下面我们开工
一、Git是什么?
Git是目前从开发人员到设计人员的版本控制技术。GitHub是目前使用最多的社交代码托管平台。这是一个你可以玩和实验的地方。在这里你可以找到最令人难以置信的开源信息、新兴技术、特性和设计。这是一个学习新事物和参与的地方。你可以把代码放在那里工作或上学,你可以获取一些你想进一步探索的代码。你甚至可以直接从你的存储库免费托管网站!
二、使用步骤
1.注册使用
因为git涉及到远端传输数据
进入(国内版)gitee.com注册,登录
右键打开 Git Bash Here
你会得到这样的页面
如果您有一个项目目录,只需转到您的终端并在您的项目目录中运行命令
git init 如果要使用项目目录中的所有文件初始化项目,请运行
注意:
将文件夹初始化成git管理的项目文件夹,命令执行完成后,文件夹中会多出一个.git 隐藏文件夹
.git/文件夹中的文件,就是用来自动记录用户修改当前文件夹中的文件历史记录的! 不需要人工干预!
git init
现在在项目目录中有一个名为.git的新隐藏目录。这是Git存储所需内容的地方,以便它可以跟踪您的项目。现在您可以使用
git status 查看文件状态
列如我么创建了 imgs文件夹和redme.text
运行 git status 得到如上图所示的结果证明,该文件处于工作区未转入工作区
git add 文件名
或者运行命令
git add . 将所有文件添加到暂存区域。
注: 添加成功后是没有任何回复的消息的
git commit -m "注释" 将文件添加到仓库区
添加成功后再次查询状态会的得到这样的结果
此时才能 运行 git commit -m "注释"代码
添加后返回类似这样的结果是正常的
再次验证
得到这样的结果,注意看最后“work tree clean”,看到这个恭喜你数据成功转入仓库区
这个过程看不明白的可以看下图
工作的三个区域及原理如上图所示
分为了,工作区,暂存区,仓库区
git log 查看历史提交记录
git leflog 查看所有提交记录
这样得到的版本号更加简介明了
2.Git命令和常规操作(小结)
- init git管理初始化
- add 工作区文件添加到暂存区
- git add 文件名 将指定的文件添加到暂存区
- git add . 将工作区所有的文件添加到暂存区
- git add * 将工作区所有的文件添加到暂存区
- commit 暂存区文件添加到仓库区
- git commit -m '提交的描述'
- status 查看项目状态
- log 查看历史提交记录
- reset 回退提交的版本
- reflog 查看所有提交记录
后悔药(回退历史版本)
现实生活中是没有后悔药的,但是git有啊,简单的代码出错解决不了,可以推倒重、但是一旦涉及
多个文件,内容繁多,推倒重做显然是不现实的,用了git就不同了git总是有后悔药可以吃的
版本号说明:
1) HEAD^ 上一个版本 HEAD^^ HEAD^^^ ....(一个^表示回退一个上个版本两个就回退两个,以此类推,但是这样写能达到效果,但是过程现对于下面的还是较为繁琐)
2)版本号(可以通过reflog来查看操作历史记录,然后使用版本号的前7位即可),例如:git reset --hard 227e72c(直接找到需要回退的版本,通过版本号精准定位到需要回退的版本)
文件忽略
介绍
- 在多个文件下,并不是所有的文件都需要版本更替,有的文件无需git进行管理,这时候.gitignore出现了
使用步骤
- 在.git的同级目录下创建 .gitignore文件
- 在文件中添加要忽略的文件名称或文件夹名称
常用配置规则:
- /git-demo1/ 过滤整个文件夹
- *.txt 过滤所有.txt文件(以txt文件为例,其他的文件同理)
- /git-demo1/a.html 过滤某个具体文件
3.分支
介绍
- git版本控制系统支持分支操作。使用分支意味着可以从开发主线上分离开来,然后在不影响主线的同时继续工作。默认只有一个分支为master主分支。
什么是主分支?
- 在初始化本地 Git 仓库的时候,Git 默认已经帮我们创建了一个名字叫做 master 的分支。通常我们把这个master 分支叫做主分支
主分支的问题
- 在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目功能的开发
分支解决问题:
- master用来保存和记录整个项目已完成的功能代码。但是不允许程序员直接在master 分支上修改代码,这样做的风险太高,容易导致整个项目崩溃。
分支相关命令:
branch
语法:git branch
作用:查看已有分支列表
branch 分支名
语法:git branch 分支名
作用:创建一个指定名称的分支
checkout
语法:git checkout 分支名
作用:切换不同的分支
merge
语法:git merge 分支名
作用:将指定名称的分支合并到当前分支
解决冲突
- 介绍:如果在两个不同的分支中,对同一个文件进行了不同的修改,Git 就没法合并它们。 我们需要打开这些包含冲突的文件然后手动解决冲突。
4.远程仓库
介绍
- Git 命令都是在本地执行,如果想通过 Git 分享你的代码或者与其他开发人员合作。就需要将文件放到一台其他开发人员能够连接的服务器上。这就是远程仓库的作用。
远程仓库分类:
- github:github是一个基于git的代码托管平台,在国外,速度比较慢,在大陆的使用很受影响
- gitee:gitee是一个基于git的代码托管平台,国内使用频率较多
- 公司自己部署,了解即可,强调不是前端人员部署的,使用步骤和命令都一样
操作流程:
注册
创建远程仓库
本地文件推送到远程仓库
克隆和同步远程仓库
相关命令:
remote add 把远程仓库地址添加到本地。使本地仓库和远程仓库产生关联
remote -v 查看远程地址信息
push
1、如果使用-u参数,则第2次及以后可以直接使用git push把本地推送到远程仓库
2、添加gitee的账号和密码,正确则正常推送
clone 拷贝一个远程仓库到本地。
pull
当本地已有远程仓库,而远程仓库如果已经有更新,则可以使用此命令更新本地仓库。
例如:下班git push,早上上班 git pull
示例:(https)
- 将远程仓库地址添加到本地:git remote add origin https://gitee.com/dillionf/demo20211207.git
- 将本地仓库数据推送到远程仓库git push -u origin master
- 注意:origin为远程仓库的名称,可以自定义
- 拷贝一个远程仓库到本地
- git clone https://gitee.com/lyt-top/vue-next-admin.git
- git pull --rebase origin master 从远程服务器更新项目到本地仓库
其它命令:
git remote rm origin 删除远程仓库地址
注意:
- 在使用pull命令从远程服务器拉去项目内容时,要保证本地仓库的版本低于远程服务器
- 运行 git pull 通常会从远程服务器上抓取数据并自动尝试合并到当前所在的分支。
5.SSH访问
简介:
- 传统方式访问远程仓库的问题:传统方式本地和远程传输,需重复输入gitee的账号和密码,较为繁琐。SSH好处:免登录身份认证、数据加密传输。而SSH实现本地仓库和gitee之间免登录的加密数据传输。更重要的原因是团队协同开发更加方便。
- SSH组成: (1)id_rsa 私钥文件,存放于开发者的电脑中 (2)id_rsa.pub 公钥文件 。
- 生成密钥步骤:1、打开Git Bash 2、执行相关命令 3、连续敲击3 次回车
相关命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
解释:生成公钥和密钥。特殊说明:会生成在C:\Users\用户名文件夹.ssh目录中。
ssh
ssh -T git@gitee.com
解释:检测Github 的SSH key 是否配置成功。图示:6-15检查SSH是否配置成功
配置ssh:
- 使用记事本打开id_rsa.pub文件,复制里面的文本内容
- 登录gitee,点击头像-> 设置-> 安全设置:SSH公钥 -> 添加公钥
- 将id_rsa.pub 文件中的内容,粘贴到公钥 对应的文本框中
- 在Title 文本框中任意填写一个名称,来标识这个Key 的所有者是谁
注意:
①若需要通过https的方式访问别人的public开源库,则可以通过输入用户名、密码的方式来完成提交(但一定要保证本地账户凭据与远程一致,若不一致,则使用下面步骤来修改)。
步骤:控制面板-用户账户-管理Windows 凭据-修改普通凭据即可
②若使用SSH方式来提交仓库,则需要在账户中配置公钥(一个公钥对应一个私钥,若多人,需添加多个公钥)
总结
Git和SVN的区别:
SVN
- SVN:SVN是一个开放源代码的集中式版本控制系统,用于多个人共同开发同一个项目,实现共享资源。集中式版本控制系统:版本库是集中存放在中央服务器,开发者需要先从中央服务器获取最新的版本文件,然后开始干活,最后再把自己修改的文件推送到中央服务器。
Git
- Git:Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。分布式版本控制系统:没有“中央服务器”,每个人的电脑上都是一个完整的版本库,联网开发不是必须的。但两两开发者之间肯定不会以qq或U盘形式传送,也有一台充当“中央服务器”的电脑(gitee和github)。此服务器的作用仅是用来方便“交换”各开发之间的修改。