git+node腾讯云

第一章 静态页面,看向github

1.熟悉Git

1.Git理论上的认识

Git是一个版本控制工具,版本控制有利于个人开发改进迭代和团队协作。

Git的优势:
①大部操作在本地完成,不需要联网。
②完整性保证。
③尽可能添加数据而不是删除或修改数据。
④分支操作非常快捷流畅。

版本控制工具的分类
集中式版本控制工具:CVS、SVN、VSS……
分布式版本控制工具:Git、Mercurial、Bazaar、Darcs……

版本控制工具应该具备的功能:

①协同修改:多人并行不悖的修改服务器端的同一个文件。
②数据备份:不仅保存目录和文件的当前状态,还能够保存每一个提交的历史状态。
③版本控制:在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面SVN采用的是增量式管理的方式,而Git采取了文件系统快照的方式。
④权限控制:对团队中参与开发的人进行权限控制,对团队外开发者贡献的代码进行审核————Git独有。
⑤历史记录:查看修改人、修改时间、修改内容、日志信息。将本地文件恢复到某一个历史状态。
⑥分支管理:允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

2.Git安装

官网
安装流程:(个人特别不喜欢那种图很多很大滑半天的,在这里写真的太棒了)

基本上默认建议使用vim编辑器是否要修改初始化分支的名字是否要修改环境变量选择ssh可执行文件选择后台客户端连接协议配置行末换行符配置Git Bash终端类型选择默认的从远程库拉取代码到本地库的行为凭据管理器其他配置实验室功能
1.让Git决定,以后无论创建哪个库,都是用master作为名字(默认)
2.自定义初始化分支名字
1.完全不修改PATH环境变量,仅在Git Bash中使用Git。2.可以在Git Bash里面使用Git,也可以在第三方软件的控制台等里面使用Git 3.会修改掉一些Windows工具(一般不选这个)使用OpenSSL协议进行连接1.选择跨平台的凭据管理器
2.选择windows的凭据管理器
1.使用文件缓存机制
2.使用符号连接

3.Git结构

工作区——>git add———>暂存区———>git commit———>本地库
写代码临时存储历史版本

4.Git命令行操作

1.本地库初始化2.设置签名(这里的签名和登陆远程仓库代码托管中心的账号、密码没有任何关系)3.查看状态、添加到暂存区4.查看版本5.操作版本(硬操作)6.操作版本(reset三个参数的对比)7.文件找回(已经将删除文件的操作提交到内存区)8.文件找回(删除文件的操作仅仅提交到暂存区)9.比较文件
命令:git add(以.开头的文件都是隐藏文件)
注意.git目录中存放的都是本地库相关的子目录和文件,不要删除,也不要胡乱修改。
命令 :(如果都有就近原则,项目级别的优先级由于系统用户级别,二者都有采用项目级别的签名)
①项目级别/仓库级别:仅在当前本地库范围内有效。
git config user.name lixinxin
git config user.email lixinxin207568@163.com
②系统用户级别:登陆当前操作系统的用户范围。(存放在C盘)
git config --global user.name lixinxin
git config --global user.email lixinxin207568@163.com

作用:区分不同开发人员的身份。
命令 :git status
git add [filename](追踪文件,将工作区的新建或修改添加到暂存区)
git rm --cached 文件 (又变为未追踪文件)git commit(提交到本地库)
暂存区干净也没有文件的修改和新建更改文件 添加到暂存区方便的提交git commit -m "commit message" [file name]
git log添加一个测试版本
多屏显示控制方式:空格向下翻页、b向上翻页、q退出
以简洁的方式显式版本git log --pretty=onelinegit log --oneline
git reflog(head@{移动到当前版本需要的步数}对于移动指针前进后退十分有价值)
1.基于索引操作版本
向后退git reset --hard 索引前进
2.使用^符号,只能向后退git reset --hard HEAD^(两个退两步,可以看出git log --oneline只显示历史版本)
git reset --hard HEAD~50 后退五十步(只能后退)
1.--soft 参数
仅仅只是在本地库移动HEAD指针。
2.--mixed参数
在本地库移动HEAD指针,重置暂存区。
3.--hard
在本地库移动HEAD指针,重置暂存区,重置工作区。
解释:本地库版本后退,暂存区如果不变还是新的,所以状态绿色。本地库版本后退,暂存区也后退,工作区还是新的,所以状态红色。如果三个都变,则状态无色Clean。
rm [filename]删除后提交到暂存区删除后提交到本地库删除的记录永远不会变git reset --hard回退到上一个版本,工作区找回了文件。找回文件的前提是删除前文件存在时的状态被提交到了本地库。修改文件后git diff(将工作区的文件和暂存区进行比较)将修改后的文件添加到暂存区,再比较git diff HEAD(将工作区中的文件与本地库历史记录比较,不带文件名比较多个文件)

5.Git分支管理

分支是在版本控制过程中,使用多条线同时推进多个任务。
master主干分支。
如果不想对其造成影响,开启另一个分支feature_blue,最开始该分支是从主干分支复制过来,内容一样。
再开启另一个分支feature_game,也是从master复制过来,按照自己的速度开发。

三个分支各自独立,如果其中一个分支开发失败,把该分支删除即可,方便试错。如果有一个分支成功,就可以合并分支。但是主干分支也可能出现bug,hot_fix热修复(服务器上的程序不停止执行。停止修复则是冷修复),新开辟hot_fix分支,修复完马上合并到主干。

git branch hot_fix创建hot_fix分支
git merge hot_fix合并hot_fix分支到master

  • 解决合并分支时的冲突,都修改了同一个文件的同一行,git merge master没有产生额外的文件处于合并文件冲突状态,文件中多了<<<<<<HEAD(当前分支的内容)和>>>>>>master(另外一个分支的内容)
  • 由自己去决定选择哪个分支,自己删改。然后git add [filename]添加到暂存区,但还是处于合并状态。git commit -m [日志](这里不能带文件名)结束合并状态。

分支的好处:

  • 同时并行推进多个功能开发,提高开发效率。
  • 各个分支在开发过程中,如果有一个分支开发失败,不会对其他分支有任何影响,失败的分支删除即可。

6.Git的基本原理

①哈希
哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:

  • 不管输入的数据量有多大,输入同一个hash算法,得到的加密结果长度固定。
  • 哈希算法确定,输入数据确定,输出数据能够保证不变。
  • 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大。
  • hash算法不可逆。

Git底层采用的是SHA-1算法。
哈希算法可以被用来验证文件,原理如下:
通过对目标文件和原始文件使用同一种hash算法加密,比较两者是否一致,不一致则文件有损坏。

②Git保存版本的机制
集中式版本控制工具的文件管理机制: 以文件变更列表的方式存储信息,这类系统将它们保存的信息看作是一组基本文件和每个文件随时间逐步积累的差异。
Git的文件管理机制: Git把数据看作是小型文件系统的一组快照,每次提交更新时Git都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git不再重新存储该文件,而是保留一个链接指向之前存储的文件。所以Git的工作方式可以称之为快照流。

2.Git与GitHub

1.GitHub理论上的认识

GitHub是Git的代码托管中心

代码托管中心: 维护远程库
局域网环境下:GitLab服务器
外网环境下: GitHub、码云

2.GitHub的命令行操作

①创建一个repository:远程库github.com/lixinxin207… (我创建的public仓库bbj)

②本地库push到远程库:由于每次敲地址太复杂,因此在git本地将其保存起来,git remote -v查看别名,git remote add origin github.com/lixinxin207… 添加别名 image.png
git push origin master此时我一直失败,最后在GitHub的设置中生成一个token用其作为密码成功。
这种http可能每次都要登陆很麻烦,用ssh,只能为一个账号设置这个。复制.ssh的id_rsa.pub中的内容到GitHub的setting的SSH,此时使用别名git@github.com:lixinxin207568/bbj.git。 image.png

image.png

image.png

③克隆远程库:git clone github.com/lixinxin207… 完整的把远程库下载到本地,创建远程地址别名,初始化本地库。git clone -b 分支名 地址名

④拉取pull:pull相当于fetch+merge
git fetch origin master 从远程的origin仓库的master分支下载代码到本地的origin master
git merge origin/master把远程下载下来的代码合并到本地仓库,远程的和本地的合并
git pull origin master image.png

⑤解决冲突:1.如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉取。 2.拉取下拉后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。

⑥团队成员fork: image.png

团队成员发起请求,项目拥有者同意merge后合并confirm merge。image.png

3.Vscode的Git插件

1.如果vscode找不到git。 设置vscode,搜索git.path,image.png 设置"git.path":"D:/Program Files/Git/bin/git.exe"

2.解决远程合并冲突,————这个问题太难解决了,合并时vscode一直处于变基,哎,还是按简单的来,不要拉取远程文件变更自己了,太麻烦了。———————希望以后能解决。

第二章 搭建后台api服务器

1.购买腾讯云轻量应用服务器

刚注册的账号,只要50r一年,很划算。

2.安装宝塔界面

管理界面重置密码登陆宝塔官网提供的安装命令官网防火墙放行8888端口宝塔中安装pm2、安装nginx(FTP、mysql)解析域名、创建站点,放行端口

同意强制关机
ssh root@ip要用root身份登陆yum install -y wget && wget -O install.sh download.bt.cn/install/ins… && sh install.sh添加规则