注:本文为自己理解,如有不正确地方请谅解 / 指出!
👀
一、Git
1、Git介绍
(1)Git是目前世界上最先进的分布式版本控制系统。
版本控制系统: 设计师在设计的时候做了很多版本,经过数天后在去问设计师每个版本都改了啥,设计师此时可能就说不上来了。这个时候如果能有一个软件能记录每次的文件改动,并且还能协调多用户编辑,那岂不是美滋滋?这个软件应用起来应该像这个样子:版本、文档名、操作用户、日志、修改时间。
(2)Git与GitHub
2.1 两者区别:(Git是一个软件,GitHub是一个网站)
1)Git是一个分布式版本控制系统,简单的说起就是一个软件,用于记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况软件。
2)GItHub(https://www.github.com)是一个为用户提供Git服务的网站,简单说就是一个可以放代码的地方(不过可以放的当然不仅是代码)。GitHub除了提供管理Git的web界面外,还提供了订阅、关注、讨论组、在线编辑器等丰富的功能。GitHub被称之为全球最大的基友网站。
2.2 GitHub注册
打开GitHub官网:https://www.github.com 点击右上角的“Sign up”按钮。 (选择免费账户、进行验证)
2.3 Git安装
打开Git官网:https://git-scm.com/ 进行下载;下载成功自行安装 (安装完成后可能会不能输入中文:1.打开Git Bash后,对窗口右键->Options->Text->Locale改为zh_CN,Character set改为UTF-8即可 2.关闭再打开就可以啦。)
2.Git的使用
(1)本地仓库
①工作流程
1)Git本地操作的三个区域:(用三个模块来表示)
a.Git Repository(Git仓库) 最终确定的文件保存到仓库,成为一个新的版本,并且对他人可见 b.暂存区 暂存已经修改的文件最后统一提交到Git仓库中 c.工作区(Working Directory) 添加、编辑、修改文件等动作
2)工作流程:(从下往上)
(一个思想:就是从工作区把所有任务布置完成后由暂存区一次存到Git仓库) 三个指令:
git add 、
git commit -m 、
git status
1.2:本地仓库操作
(创建用户表:在不重装App/不重装系统的情况下都不会在用到--属于一次性操作--)
(作为初学Git建议用空文件夹,但目录中不能有中文)
创建git仓库的步骤:
01、命令 mkdir 文件名 创建空目录 也可以 右键直接创建
02、在命令行中 cd 文件名 进入目录
03、Git仓库初始化(让Git知道,它需要来管理这个目录)
指令:git init (用于让Git知道,它需要来管理这个目录)
表现:执行后会在项目目录下创建“.git”的隐藏目录,这个目录时Git所创建的,不能删除,也不能随意更改其中的内容。
在后续对于文件(可以操作一个或多个)操作之后,重复使用git add 与 git commit指令即可。 操作步骤:
1.3:时光穿梭机–版本回退(开发的后悔药)
版本回退分为两步骤进行操作:
步骤:
01:查看版本,确定需要回到的时刻点
指令:
git log
git log --pretty=oneline
git log 与 git log --pretty=oneline的区别:(其目的是一样的)
02、回退操作
指令:
git reset --hard 提交编号
案例:回到创建好第一个文件readme.txt的时候。
注意:回到过去之后,要想再回到之前最新的版本的时候,则需要使用指令去查看历史操作,以得到最新的commit id。 指令:Git reflog
小结:
1、要想回到过去,必须先得到commit,然后通过git reset-hand 进行回退;
2、要想回到未来,必须使用git reflog进行历史操作查看,得到最新的commit id;
3、在写回退命令的时候commit id 可以不用写全,git会自动识别,但是也不能写太少,至少需要些前4位字符。
二、远程仓库
线上仓库操作以GitHub为例。
2.1 线上仓库创建
注意:仓库名要求在当前账号下唯一
GitHub创建存储库的步骤:
2.2:两种常规使用方式
2.2.1:基于http协议
操作步骤:
01、创建空目录,名称就称为:GitHub上创建的项目名
02、使用clone 指令克隆线上仓库到本地
语法:git clone 线上仓库的地址
从线上克隆到本地(并且和线上的东西是一样的)
03、在仓库上做对应的操作(提交暂存区、提交本地仓库、提交线上仓库、拉取线上仓库)
提交到线上仓库的指令:git push
在首次往线上仓库shop提交内容的时候出现了403的致命错误,原因是 不是任何人都可以往线上仓库提交内容,必须需鉴权。 需要修改“.git/config”文件内容:
(注意:
1、提交线上需要联网
2、报 403 是没有权限 对其进行权限设置)
例如:修改好的config文件,
在设置好用户名之后再次尝试push指令:
线上提交后的效果(浏览器上刷新):
拉取线上仓库: git pull
提醒(非常重要):
在每天工作的第一件事就是先git pull拉取线上最新的版本;
每天下班前要做的是git push,将本地的代码提交到线上仓库。
·
2.2.2:基于ssh协议 (推荐)
该方式与前面https方式相比,只是影响github对于用户的身份鉴权方式,对于git的具体操作(如提交本地、添加注释、提交远程等操作)没有任何影响。
生成公私钥对指令(需先自行安转OpenSSH):ssh-keygen -t rsa -C "注册邮箱"
步骤:
1、生成客户端公私钥文件
2、将公钥上传到GitHub
实际操作:
01:打开提示
02:创建公私钥对文件
首先安装OpenSSH,因为Windows不带,需自行安装。
03:上传公钥文件内容(id_rsa.pub)
填写完毕之后保存即可。
04:执行后续git操作,操作与先前一样
【1】clone(克隆)线上仓库到本地 (指令:git clone)
【2】修改文件后添加缓存区(后面操作跟https都一样了)
线上仓库效果:
2.3 分支管理
补充:用一个命令代替创建分支和切换分支
操作步骤:
01、查看分支 git branch
注意:当前分支前面有个标记“*”( ` * ` 在谁前面代表当前分支)。
02、创建分支 git branch 分支名
03、切换分支 git checkout 分支名
04、合并分支 git merge 被合并的分支名
现在现在dev分支下的readme文件中新增一行并提交本地
切换到master分支下观察readme文件
将dev分支的内容与master分支合并:
05、删除分支 git branch -d 分支名(合并完成后 dev分支就没有用了,执行删除)
注意:在删除分支的时候,一定要先退出要删除的分支,然后才能删除。
06、合并所有分支之后,需要将master分支提交到线上远程仓库中:
2.4 冲突的产生与解决
案例:模拟产生冲突。
【产生冲突】
01、同事在下班之后修改了线上仓库的代码
注意:此时我的本地仓库里面的内容与线上是不一致的。
02、第二天上班的时候,我没有做 git push操作,而是直接修改了本地的对应文件的内容。
03、需要在下班的时候将代码修改提交到线上仓库(git push)。
提示我们要在再次push之前先git pull操作。
【解决冲突】
04、先git pull
此时git 已经将线上与本地仓库的冲突合并到了对应的文件中。
(合并后的效果)
05、打开冲突文件,解决冲突。
解决方法:需要可能和同事(谁先提交的)进行商量,看代码如何保留,将改好的文件再次提交即可。
06、重新提交
线上效果:
三、Git实用技能
01、图形管理工具
02、忽略文件
案例:
01、先在本地仓库中新建一个js目录以及目录中js文件
02、依次提交本地与线上
线上效果:
03、新增 .gitignore文件(用的是 liunx命令来创建的)
04、编写文件中的规则(根据需要编写)