git日常

  |  
 阅读次数

git使用日常

一、拉取项目添加 “用户名:密码”

git clone http://`lsc:sc123456@`192.168.0.196:3000/jdyx/shrs2006.com.git

克隆时可以 添加 用户名:密码@ uri/url


二、git commit -m“ 与 “git commit -am“ 的区别

1
2
3
git commit -am "str"
# 等同于
git commit -a -m "str"

拓展

通常我们提交git的时候都是

1
2
3
git add .
git commit -m "some str"
git push

这三大步,而实际上,你只需要两条命令就够了,除非有新的文件要被添加进去。

1
2
git commit -am "some str"
git push

但是,git commit -mgit commit -am的区别在哪里?在于a.txt文件修改之后的处理

下面,向a.txt添加内容’a’

文件a.txt处于已跟踪,但未暂存状态。这时,如果使用git commit -m是无法提交最新版本的a.txt的,提交的只是最开始空内容的旧版本a.txt

文件a.txt处于已跟踪,但未暂存状态。这时,如果使用git commit -m是无法提交最新版本的a.txt的,提交的只是最开始空内容的旧版本a.txt

而如果使用git commit -am,则可以省略git add a.txt这一步,因为git commit -am可以提交跟踪过的文件,而a.txt一开始已经被跟踪过了

总结:

使用这两个命令区别的关键就是git add命令

git add命令是个多功能命令,根据目标文件状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态

我们需要用git add命令来跟踪新文件,但如果使用git commit -am可以省略使用git add命令将已跟踪文件放到暂存区的功能

git查看远程仓库信息

git remote -v

git remote show origin

git切换远程仓库地址

方式一:修改远程仓库地址

git remote set-url origin URL // 更换远程仓库地址,URL为新地址。

方式二:先删除远程仓库地址,然后再添加

git remote rm origin // 删除现有远程仓库
git remote add origin url // 添加新远程仓库

git添加、查看、删除远程仓库地址

git命令大全

分支操作

  1. git branch:创建分支
  2. git branch -b:创建并切换到新建的分支上
  3. git checkout:切换分支
  4. git branch:查看分支列表
  5. git branch -v:查看所有分支的最后一次操作
  6. git branch -vv:查看当前分支
  7. git brabch -b [分支名] origin/分支名:创建远程分支到本地
  8. git branch –merged:查看别的分支和当前分支合并过的分支
  9. git branch –no-merged:查看未与当前分支合并的分支
  10. git branch -d 分支名:删除本地分支
  11. git branch -D 分支名:强行删除分支
  12. git branch origin 分支名:删除远处仓库分支
  13. git merge 分支名:合并分支到当前分支上

暂存操作

  1. git stash:暂存当前修改
  2. git stash apply:回复最近的一次暂存
  3. git stash pop:恢复暂存 并删除暂存记录
  4. git stash list:查看暂存列表
  5. git stash drop 暂存名(例:stash@{0}):移除某次暂存
  6. git stash clear:清除暂存

回退操作

  1. git reset –hard HEAD^:回退到上一个版本
  2. git reset –hard ahdhs1(commit_id):回退到某个版本
  3. git checkout –file:撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,如果文件加入到 版本库,则还原至加入版本库之后的状态)
  4. git reset HEAD file:撤回暂存区的文件修改到工作区

标签操作

  1. git tag 标签名:添加标签(默认对当前版本)
  2. git tag 标签名 commit_id:对某一提交记录打标签
  3. git tag -a 标签名 -m ‘描述’:创建新标签并增加备注

linux下docker部署gogs git仓库

  |  
 阅读次数

linux下docker部署gogs git仓库

1. 远程登录Linux服务器

首先,linux 命令行使用 root ssh ( ssh远程登录命令简单实例 )

例如: [公司内网服务器]

1
2
3
ssh root@192.168.0.196

psd: Jdyx[5个8]

2. 拉取docker下gogs

进入gogs官网,在官网左侧找到 拉取命令

命令行输入 拉取命令 docker pull gogs/gogs

拉取完成后 有提示,接着输入查看状态的docker命令 docker ps

docker ps“: 属于Linux命令 是查看 docker状态的命令

ls“: 查看当前目录文件

3. 配置

vim gogs.docker“: 进入并编辑 gogs.docker 配置文件

gogs-git官网 配置

1
2
3
4
5
6
7
8
9
10
11
# Pull image from Docker Hub.
$ docker pull gogs/gogs

# Create local directory for volume.
$ mkdir -p /var/gogs

# Use `docker run` for the first time.
$ docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs

# Use `docker start` if you have stopped it.
$ docker start gogs

配置文件:

1
2
#!/bin/bash
docker run --restart=always --name=gogs -p 3000:3000 -v /var/gogs:/data gogs/gogs

4. 运行

chmod +x gogs.docker“:

echo $PATH“: 打印 环境变量

./gogs.docker“:启动服务

5. 重启服务

docker ps获取CONTAINER ID

docker restart [19d724ea6ec9(ID)]

SPDY:Google开发的下一代HTTP协议

  |  
 阅读次数

SPDY(发音同”speedy”):Google开发的下一代HTTP协议

(解决HTTP协议的缺点,Wrapper模式)

概述

SPDY是Google宣布正在开发的下一代网络协议,SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。HTTP自上世纪90年代问世以来,已有二十年的历史,期间互联网本身发生了很大的变化,也使得HTTP的许多不足暴露了出来,现在它已经不能满足许多web app的要求。Google表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%,并且目前已经在Gmail等应用中使用。目前业界支持SPDY的服务器有Netty和Nginx(将要支持)。Nginx 官方发布下一个版本 1.3.0 的路线图,该版本将支持 Google SPDY。

数据库范式介绍

  |  
 阅读次数

关系数据库·范式介绍

一、基本介绍

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈 递次规范,越的 范式 数据库冗余越小

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

范式的包含关系。一个数据库设计如果符合第二范式,一定也符合第一范式。如果符合第三范式,一定也符合第二范式…

数据库基本概念

要理解范式,首先必须对知道什么是关系数据库,简单的说:关系数据库就是用二维表来保存数据。表和表之间可以……(省略10W字),如果对数据库很熟悉,可以不用理会下面的概念。

实体: 现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,不如说“老师与学校的关系”。

属性: 教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。

元组:表中的一行就是一个元组。

分量元组的某个 属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。

码(键):表中可以唯一确定一个元组的某个 属性(或者属性组),如果这样的码有不止一个,那么大家都叫 候选码,我们从候选码中挑一个出来做老大,它就叫主码(主键)

全码:如果一个码包含了所有的属性,这个码就是全码。

主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。

非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。

外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。

候选码: 若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何真子集都不能再标识,则称该属性组为(超级码)候选码。

数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别

函数依赖: 设X,Y是关系R的两个属性集合,存在X→Y;则称Y 函数依赖于X。

部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y; 若X’是X的真子集,存在X’→Y,则称Y 部分函数依赖于X。

完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y; X’是X的真子集,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。(个人理解为 只能通过 X确定 Y,并且每个X’ 都不能确定Y 的关系 就是完全函数依赖)

传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z(Z !→Y),则称Z传递函数依赖于X。

假如 Z 函数依赖于 Y,且 Y 函数依赖于 X (『Y 不包含于 X,且 X 不函数依赖于 Y』这个前提),那么我们就称 Z 传递函数依赖于 X ,记作 X T→ Z,如图3。

二、6种范式

前面说到,范式越高,数据的冗余越小。其实没有冗余的数据库设计是可以做到的。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。(最典型的就是在一些数据表中不仅存作为外键的user_id,同样存user_name,这样虽然违反数据库范式增加了user_name字段,但是却提高了效率,减少了获取user_id后再去user表中获取user name的操作)

所以实际中,我们只需要考虑数据库满足第三范式就可以了,下面以最通俗的方式来解释数据库的范式。

第一范式(1NF):属性不可分

(1NF是对属性的原子性约束,要求属性具有原子性,不可再分解)

不满足第一范式的数据库,不是关系数据库!

第二范式(2NF):符合1NF,并且非主属性完全依赖于码。

第二范式要求非主属性依赖于主关键字。

(2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性,更通俗说有主键ID)

第三范式(3NF):符合2NF,并且,消除传递依赖。
(3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余)

Linux 删除文件夹和文件的命令

  |  
 阅读次数

Linux 删除文件夹和文件的命令

  • -r 就是向下递归,不管有多少级目录,一并删除
  • -f 就是直接强行删除,不作任何提示的意思

删除文件夹实例:

rm -rf /var/log/httpd/access

将会删除/var/log/httpd/access目录以及其下所有文件、文件夹

删除文件使用实例:

rm -f /var/log/httpd/access.log

将会强制删除/var/log/httpd/access.log这个文件