git理解&&nginx理解

git

版本控制

版本控制(Revision
control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

主流的版本控制器有如下这些:

Git

SVN(Subversion)

CVS(Concurrent Versions System)

VSS(Micorosoft Visual SourceSafe)

TFS(Team Foundation Server)

Visual Studio Online

使用最多的是Git和SVN

本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。
在这里插入图片描述

不能多台电脑同时修改一个项目文件。

集中版本控制

最知名的是SVN
在这里插入图片描述

所有的代码都储存在服务器上,每个人都需要先从服务器更新最新版本的项目文件,然后再修改项目,把代码提交到服务器上。
如果服务器故障,程序员就没办法从服务器获取最新的项目文件,每个人的计算机内只保存着,他最后一次修改的版本,导致每个人的进度和信息不同步。

分布式版本控制

最著名的是Git
值得一提的是,git是linux之父李纳斯·托沃兹(Linus Benedic Torvalds)花了两周时间开发出来的,为辅助 Linux 内核,替代 BitKeeper。
在这里插入图片描述
最新版本的项目文件会同步到所有人的计算机中。就算服务器坏了,也可以在计算机中找到最新版本的文件。
但是坏处是,每个人都掌握着完整的项目文件,安全性低。

Git和SVN的区别

1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs等的文件夹里。

3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1
哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

Git命令(配置略)

Git Bash:Unix与Linux风格的命令行

Git CMD:Windows风格的命令行

Git GUI:图形界面的Git

我觉得只要掌握一种就可以了,所以学习的是linux风格。

命令含义例子
cd改变目录。cd 文件夹1
cd . .回退到上一个目录cd …
pwd显示当前所在的目录路径pwd
ls/ll列出当前目录中的所有文件ls只显示文件名,ls显示创建时间,总条数等很多内容
touch新建一个文件touch index.html
rm删除一个文件rm index.html
mkdir新建一个文件夹mkdir js
rm -r删除一个文件夹rm -r js
reset重新初始化终端/清屏reset
clear清屏clear
history查看命令历史history
help帮助help
exit退出exit
#注释#rm 1.txt
git init初始化仓库git init
git clone拷贝一份远程仓库,也就是下载一个项目

add commit等不列举在这里

rm -rf / 数据库从删库到跑路

git分支命令

列出所有本地分支
git branch
列出所有远程分支
git branch -r
新建一个分支,但依然停留在当前分支
git branch [branch-name]
新建一个分支,并切换到该分支
git checkout -b [branch]
合并指定分支到当前分支
$ git merge [branch]
删除分支
$ git branch -d [branch-name]

删除远程分支

$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

git原理

工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。
在这里插入图片描述
图上包含六个常用的命令
上传项目文件的大概流程是,先add到缓存区,再commit到本地仓库,再push到远程仓库。下载的过程类似,先pull到本地仓库,再reset到缓存区,最后checkout到工作区。
git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

查看文件状态

查看指定文件状态

git status [filename]

查看所有文件状态

git status

忽略文件

有些时候不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

在主目录下建立".gitignore"文件,此文件有如下规则:

忽略文件中的空行或以井号(#)开始的行将会被忽略。

可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。

如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。

如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。

如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

*.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt     #但lib.txt除外
/temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/       #忽略build/目录下的所有文件
doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

两种上传文件的方法

1.vscode直接上传

安装git的时候配置了一下,设置他绑定的软件是vscode,所以可以用vscode直接提交而不用命令行。
大概方法就是,先对文件进行修改,然后点击资源管理器。
在这里插入图片描述

点击更改上面的加号,将所有文件提交到暂存区

在这里插入图片描述
提交暂存文件
在这里插入图片描述
输入信息
在这里插入图片描述
推送。

2.通过命令行上传

在这里插入图片描述
首先要pull一下,更新本地的文件
在这里插入图片描述
add . 将当前文件夹下的所有文件提交到暂存区
在这里插入图片描述
也可以写git commit -a
这样每次修改文件,都不需要add了

nginx(简单概括)

nginx主要的特性是,负载均衡和动静分离
正向代理是作用在用户端的,一般是翻墙之类的,反向服务器时作用在服务器端的,为服务器分配请求。
负载均衡就是,当接入代理服务器时,代理服务器会为服务器分配资源,比如请求了15次,如果每个服务器的权重都相同,那么可能会给每个服务器分配5次请求。
动静分离就是把动态资源jsp和servlet等和静态资源html,css等分离开。
通过在nginx安装目录输入cmd,输入命令行nginx.exe启动代理服务器
nginx -s reload可以重新加载配置文件。
nginx -s stop 可以停止nginx进程

过程

假设说我想访问localhost:7002的时候,随机跳转到localhost:8080或者localhost:8081,大概需要在nginx.conf里这么配置:

   upstream 123{
		server 127.0.0.1:8080 weight=1;
		server 127.0.0.1:8081 weight=1;
    }

自己设置一个类似函数的东西,设置两个端口,让它负载均衡

server {
    listen       7002;
    server_name  localhost;
    #这里是监听

    location / {
        root   html;
        index  index.html index.htm;
        proxy_pass http://123;
        #这里设置一下跳转到哪里
    }
    }

还没完全搞明白,博客待更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值