git


typora-copy-images-to: medias

1. git

1.1. 学习目标

  • 理解
    • 常用bash系统命令
    • git 的概念
    • git 和 svn 的区别
    • git 的工作流程
    • git 管理文件版本
    • 使用远程仓库
    • 分支管理
    • 冲突
  • 应用

1.2. 认识命令行 了解

1.2.1. shell

Shell 俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)

1525664062775.png

​ cmd shell 是系统提供的最基本的shell,功能也相对基础。

​ powser shell 和 git bash shell 可以理解是对 cmd shell 的一层封装,提供了更为强大的命令。

​ 我们平常在系统上所进行的操作,如新增文件,编辑文件,删除文件等。其实底层都是通过一系列的命令来执行的。

1.2.2. 常见bash命令

pwd (Print Working Directory) 查看当前目录

cd (Change Directory) 切换目录,如 cd /etc  ../上级目录  

ls (List) 查看当前目录下内容,如 ls 

mkdir (Make Directory) 创建目录,如 mkdir blog

touch 创建文件,如 touch index.html

cat 查看文件全部内容,如 catindex.html


rm (remove) 删除文件,如 rm index.html、rm -rf  blog

rmdir (Remove Directory) 删除文件夹,只能删除空文件夹,不常用

mv (move) 移动文件或重命名,如 mv index.html ./demo/index.html

cp (copy) 复制文件,cp index.html ./demo/index.html

head 查看文件前几行,如 head -5 index.html

history 查看操作历史

whoami 查看当前用户

【注意】,在命令行当中 使用快捷键 进行复制粘贴都是没有效果的。

  • ctrl + p 没有效果
  • ctrl + c 强制退出到 命令行当中

1.2.3. vi编辑器

  • vi编辑器是Linux和Unix上最基本的文本编辑器。由于不需要图形界面,vi是效率很高的文本编辑器
  • vi编辑器提供了3种模式,分别是命令模式、插入模式、末行模式 每种模式有不同的功能
1525665671693.png
a) 打开/创建文件, vi 文件路径
b) 末行模式 :w保存,:w filenme另存为
c) 末行模式 :q退出
d) 末行模式 :wq保存并退出
e) 末行模式 :e! 撤销更改,返回到上一次保存的状态
f) 末行模式 :q! 不保存强制退出

================================================================

h) 命令模式 ZZ(大写)保存并退出
i) 命令模式 u辙销操作,可多次使用
j) 命令模式 dd删除当前行
k) 命令模式 yy复制当前行
l) 命令模式 p 粘贴内容
o) 命令模式 i进入编辑模式,当前光标处插入
p) 命令模式 a进入编辑模式,当前光标后插入
q) 命令模式 A进入编辑模式,光标移动到行尾
r) 命令模式 o进入编辑模式,当前行下面插入新行
s) 命令模式 O进入编辑模式,当前行上面插入新行

1.3. git概述

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

它可以处理以下需求

  • 方便的和团队共享文件
  • 对文件进行版本的控制

Git百度百科

1.4. git和svn对比

区别:

git:在没有网络的情况下可以使用

svn:一定要在有网络的情况下使用

1.4.1. svn

​ SVN是集中式版本控制系统,版本库是集中放在中央服务器的。

每次需要获取最新的文件或者保存自己当前的记录时,都必须要连接到服务器才可以。

关键字

  • 集中式
  • 需要连接外网


    1525849453223.png

1.4.2. git

​ Git是分布式版本控制系统,它没有中央服务器,每个人的电脑就是一个完整的版本库。

当需要和别人分享文件时时,再联网即可。

关键字:

  • 分布式
1525849575573.png

1.5. git 安装

​ Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行使用。

下载地址

1525849875115.png

​ 安装成功后(windows下),在系统的任意目录下 点击 鼠标右键 出现以下菜单,代表安装成功。

1525849962486.png

1.6. 初次运行 Git 前的配置

​ 在团队的项目开发中,当我们对进行文件的修改时,都应该告诉服务器 是做的修改。所以 需要 配置个人信息。

1.6.1. 全局配置

​ 打开 git 命令行工具

1525850607969.png

​ 输入

# 配置 用户名
git config --global  user.name  xxx 

# 配置 邮箱
git config --global  user.email  xxx 

# 查看用户名
git config   user.name  

1.7. git 基础

​ 如 我们想使用 git 对 该目录进行版本控制

1525851471188.png

1.7.1. 创建版本库

​ 在 我的第一个网站 目录 内 输入 git init 初始化 仓库

git init 

​ 可以看到,在该目录下 多了一个 隐藏文件夹 .git 该文件夹便是实现存放版本记录的地方。不要手动修改!

1525851668248.png

1.7.2. 添加到暂存区

​ 现在我们的代码 和 git 仓库 还没有直接的联系 查看 git 仓库状态 输入 git status

git git status
1525852100376.png

​ 我们把添加跟踪的步骤,叫做 添加到 暂存区

​ 输入 git add * 对所有文件进行跟踪

git add * 

​ 此时,重新 查看 仓库状态

git status 
1525852288499.png

​ 因此,我们可以 随时的 输入 git status 来查看当前仓库的状态,来获得 提示。

1.7.3. 提交本地仓库

​ 暂存区的意思 只是暂时存储文件,当需要把对文件的操作 永久存储下来时,需要在把暂存区中的文件提交到到本地仓库。

​ 输入以下命令进行提交,同时 还需要备注 信息 如 初始化项目新增了购物接口 等。

git commit -m "初始化项目"

​ 重新输入 git status 查看git 仓库状态

1525853095009.png

1.7.4. 小结

​ 把刚才操作的流程,换成专业的术语。

  • 工作目录 :刚才操作的文件夹 我的第一个网站 就称为 工作目录
  • 暂存区 : 是用来存放 对文件进行了 跟踪,但是还没有 提交到 本地仓库 的地方
  • 本地仓库: 最终实现 文件版本管理的地方。
1525853953043.png

1.8. 修改文件

​ 在上个操作的基础上,我们对文件进行修改,然后让 git 记录这次修改的操作。

编辑 index.html 文件 输入

<h1>完成了登录页面的设计</h1>

​ 此 时 index.html 文件发生了修改 我们输入 git status 查看仓库状态

1525854096520.png

1.8.1. 添加到暂存区

​ 以上的修改,可以理解为 完成了一个功能,此时,也需要将这些代码提交到 本地仓库 中进行记录管理。因此,先添加到 暂存区 再提交到 本地仓库 中即可。

​ 将 修改的文件添加到 暂存区 输入

git add *

​ 查看git 仓库状态
](https://upload-images.jianshu.io/upload_images/6343101-48b7fbce0ba71d19.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1.8.2. 提交到本地仓库

​ 将暂存区中的文件提交的 本地仓库 实现 版本 记录

git commit -m "完成了登录功能"

​ 查看git 仓库状态

git status
1525854664486.png

1.9. 删除文件

​ 在git 仓库中,有时候删除一些无效的文件。以删除 css/index.css 为例

​ 手动将该 文件夹整个删除 删除成功 如下


1525855125140.png

​ 查看仓库状态

git status 
1525855216992.png

1.9.1. 添加到暂存区

​ 删除了 文件,也可以了解为是对项目 进行了一次升级改造,因此同样需要把该 操作 提交到 本地仓库

​ 输入 git add ./ 请注意 当添加删除操作时 使用 git add * 是无效的。(git add * 不会缓存删除操作)

git add ./
1525855744440.png

1.9.2. 提交到本地仓库

​ 把该 删除操作 提交到 本地仓库 实现 版本记录

git commit -m "删除了css文件夹"
1525855898836.png

​ 查本地仓库的状态

git status
1525855957999.png

1.10. 忽略文件

​ 有时候,在工作目录下的某些文件,是属于私人的或者是项目运行所产生的临时文件,并不需要添加到 版本控制中。 如 新增一个文件 私人密码

1525858765405.png

​ 查看git仓库状态

git status
1525859125972.png

​ 此时 我们可以使用 git 规定的一个文件 .gitignore 在里面指定需要过滤的文件

1.10.1. 创建 忽略文件清单

​ 直接在windows 右键 新建文件 gitignore 会创建失败。

​ 使用命令行的方式创建

touch .gitignore

​ 编辑 .gitignore 文件 直接写入 要忽略的文件名即可

# 忽略该文件
私人密码.txt

​ 查看git仓库状态

git status
1525859577480.png

大部分情况下,我们也需要将 .gitignore 文件一起提交到本地仓库中实行版本控制

​ 添加到暂存区 该文件 使用 git add * 无效 需要手动指定文件名

git add .gitignore

​ 提交到本地仓库

git commit -m "添加了忽略文件列表"

1.10.2. 忽略文件语法

  • 语法大部分和正则类似

  • 空行或是以#开头的行即注释行将被忽略;

    # 这种是注释
    
  • 以斜杠 “/” 结尾表示目录;

    css/
    
  • 以星号 “*” 通配多个字符;

    *.js
    
  • 以问号 “?” 通配单个字符

  • 以方括号 “[]” 包含单个字符的匹配列表;

  • 以叹号 “!” 表示不忽略(跟踪)匹配到的文件或目录;

  • 可以在前面添加斜杠 “/” 来避免递归

    # 忽略根目录下的 css 文件夹
    /css
    # 忽略所有的css文件夹
    css/
    

1.11. 推送到远程仓库

因为在团队开发中,我们的项目文件是需要和组员进行分享的,所以实现这个功能,就必须得借助远程仓库。

远程仓库只是 本地仓库的一个备份。

目前 用得比较多的有 github码云

  • github做为最著名的git仓库托管商,是行业内的绝对权威.它给无数的开发者提供了共同学习发展的平台.
  • 码云是github的国产版,对国人做了针对性的优化,在国内也是使用者众多

我们主要演示 github的使用,码云 强烈建议 课下 自己学习使用。

1.11.1. 注册 github

先注册一个 github帐号

1525915907144.png

1.11.2. 新建远程仓库

1 一个github帐号可以建立多个远程仓库,一般 一个项目使用一个仓库。

1525916009292.png

2 填写仓库信息

1525916256235.png

3 创建成功

1525916479663.png

1.11.3. 推送到远程仓库

​ 远程仓库建立完毕之后,我们可以 将 之前的 本地仓库 我的第一个网站 推送到上面新建的 test 远程仓库上

​ 先记录远程仓库的地址

1525916715340.png
https://github.com/itcastWsy/test.git

​ 把远程仓库 记录在一个 变量 origin 上 该名字可自定义

git remote add origin https://github.com/itcastWsy/test.git

​ 在推送到远程仓库之前,先确保 本地仓库已经 执行过 commit 了,这样 才会保证 本地仓库 和远程仓库一致。

​ 查看本地仓库状态

git status
1525855125140.png

​ 开始推送

git push -u origin master

//第二次推送的时候直接使用
git push 

​ 提示输入用户名 ,直接输入即可 如 itcastWsy 然后按下回车

1525917393459.png

​ 提示输入密码

1525917512404
1525917512404

没有看到报错,就是 推送成功

1525917563467
1525917563467

同时,刷新一下 github 页面 看到远程仓库上 显示出 仓库的信息了。

1525917685788
1525917685788

1.12. 从远程仓库克隆

​ 假设 建立本地仓库推送到远程仓库 的工作都是项目经理完成了。此时,你做为一个新加入项目的 程序猿,要做的事就是从远程仓库上 克隆 代码。

​ 问项目经理拿 远程仓库的地址

https://github.com/itcastWsy/test.git

​ 在你的电脑上任意目录下(如 桌面) 开始克隆

​ 在桌面上 打开 git bash 命令行工具 输入

git clone https://github.com/itcastWsy/test.git
1525918417230
1525918417230

1.13. 从远程仓库获取更新

​ 此时,项目经理的代码 和 你的代码 是一模一样的。现在 项目经理 新增了一个文件 home.html,并把它提交到远程仓库上。

  • 新建 home.html 文件

    touch home.html
    
  • 添加到暂存区

    git add *
    
  • 提交到本地仓库

    git commit -m "新增了home.html"
    
  • 推送到远程仓库

    git push 
    
    1525919345574
    1525919345574

​ 查看远程仓库

1525919393855
1525919393855

​ 那么现在 做为程序员的你 需要把代码 进行更新

​ 回到 test 文件夹内,打开 git bash 命令行

1525919520069
1525919520069

输入以下命令 进行更新

git pull
1525919829352
1525919829352

1.14. git clone 和 git pull 的区别

  • git clone 是克隆,只需要执行一次
  • git pull 是 更新,后期反复使用

1.15. 还原文件到上次commit状态

​ 假设做为程序员的你,刚刚把代码更新下来,便上厕所去了,这个时候你的熊孩子趁你不在,对着你的键盘就是一顿 啪啪啪 ,把你 home.html 文件敲得面目全非。

​ 你现在想要做的事,就是把 home.html 还原到 拉取下来的状态。

​ 原来的home.html 内容是空的。(你是不知道里面的内容的)

​ 熊孩子 把 home.html 改成了

<h1>钱多话少死的早</h1>

​ 开始还原,在 test 目录下,输入命令行

git checkout  home.html
1525922259127
1525922259127

​ 如果想要还原多个文件,可以

  • 还原文件夹 css 文件夹

    git checkout css
    
  • 还原当前目录的所有文件

    git checkout ./ 
    

1.16. 查看版本历史

​ 做为 新加入项目的你,想要了解 这个项目,到底做过了哪些版本,想要看到之前每一次提交时的备注信息

此时,你的 test 文件夹内 输入 命令进行查看

git log
//Ctrl+c  终止命令
git log --oneline  精简查看
查看文件内容的时候可以按回车实现跳转
1525920485139
1525920485139

1.17. 还原到某一个版本

​ 做为 新加入项目的你,来获取了最新的代码之后,发现项目太大了,你不好去学习和了解 其中的某一个模块的功能和代码。如

1525922607367
1525922607367

此时,可以把整个项目 还原到 完成了登录功能的状态

​ 记录 该版本的 commit 字段

1525922690195
1525922690195

3db7762c593251f1a78e518fdd3ed6d6cad626bc
开始还原   (commit 字段 最少 写 6位)
git reset -–hard 3db7762c593251f1a78e518fdd3ed6d6cad626bc
1525922921419
1525922921419

​ 如果,在次状态下又想回到 最新的版本 新增了home.html 呢 查看提交信息

git log

​ 发现 完成登录功能 之后的日志信息 丢失了。

1525923215275
1525923215275

​ 此时,输入

git reflog 
1525923554914
1525923554914

​ 还原到最新的版本

git reset --hard 5038cc9
1525923659935
1525923659935

1.17.1. 小结

  • git checkout xxx 只能还原文件到上一个版本
  • git reset --hard 'commit的id' 可以还原到任意版本
  • git reflog 可以查看丢失了的版本的日志信息

1.18. 配置ssh

​ 我们把文件从本地仓库推送到远程仓库的方式有两种

  • HTTPS 每次都要手动输入 用户名和密码
  • SSH 配置证书后,不用手动输入用户名和密码

1.18.1. 配置证书

在git bash 命令行中输入

ssh-keygen -t rsa -C "邮箱地址"

然后一直按回车。直到出现如下界面 代表本地 证书生成成功

1525933559552
1525933559552

输入命令 打印密钥

cat ~/.ssh/id_rsa.pub
1525933696717
1525933696717

按以下步骤进行粘贴即可

1525934009733
1525934009733

输入

ssh -T git@github.com

出现以下界面代表成功。如果失败,建议多尝试几次。

1525934471737
1525934471737

1.18.2. 将提交方式 HTTPS 改为 SSH

复制 SSH 地址

1525934827313
1525934827313
1525934868632
1525934868632
git@github.com:itcastWsy/test.git

修改 origin 地址

因为之前已经将 地址 存入 origin 变量了 。查看 origin

git remote -v
1525934970736
1525934970736

此时,将origin的地址 改为 ssh 地址即可

git remote set-url origin git@github.com:itcastWsy/test.git

重新查看 git remote -v 发现修改成功

1525935054456
1525935054456

按照以上步骤执行完毕之后,再次推送到远程仓库时,就不用再输入用户名和密码了。

测试

1525935332160
1525935332160

1.19. 分支

​ 其实我们在使用git的时候,一直在 git的主分支master也是默认分支下进行工作的。也可以手动开启另外的分支进行开发。

​ 开启新的的分支时可以理解为复制了一个相同的副本.内容完全一样

​ 分支的作用是提供了一种方便、高效的管理项目的手段。

​ 学习分支,我们需要从需求入手

1528519197378
1528519197378

​ 流程解释:

  1. 网站发布了第一个版本

  2. 此时,需要研发新功能1.1版本

  3. 开启新的分支dev进行研发

    1. 研发成功,将分支dev合并到主分支master上,发布新版本1.1
    2. 研发失败,直接删除分支dev即可

    经过以上流程,我们可以在毫无风险的情况下开发新功能,不会影响到已经发布了的网站。

1.19.1. 网站发布0版本

在目下下,新建文件夹 web,并在里新建一个空的文件index.html 提交到本地仓库

1528519852700
1528519852700

1.19.2. 开启新分支

​ 在完成1.0版本发布后(commit之后),开启新分支 dev(dev为分支名)

git branch dev

​ 查看当前仓库下的分支

git branch 
1528520046133
1528520046133

1.19.3. 切换分支

​ 此时,需要手动切换分支到dev上,

git checkout dev
1528520161732
1528520161732

1.19.4. 在分支dev上开发功能

​ 此时,我们可以在分支dev上,放心的进行功能开发。编辑文件 index.html 添加一下内容

开发新功能1.0

​ 提交到仓库

git add .
git commit -m "dev下开发新功能1.1"
1528520834607
1528520834607

1.19.5. 合并分支

​ 新功能开发完毕,需要将分支dev的代码合并到主分支master

  1. 切换回主分支 master

    git checkout master
    
  2. 合并分支 dev

    git merge dev
    
    1528521188063
    1528521188063

1.19.6. 删除分支

既然 分支dev的功能已经完成,我们可以将其删除。

git branch -d dev
1525947107745
1525947107745

查看git仓库下的分支,发现 分支dev 确实没有了

1525947206980
1525947206980

1.20. 冲突

​ 冲突是指当两个同名的文件进行合并时,会产生的一种场景。

1.20.1. 冲突描述

1526001349246
1526001349246

​ 当把 我的代码内的两个文件 拷贝到 他的代码 文件夹内时

1526001545996
1526001545996

​ 可以看到此时,冲突就产生了 因为电脑并不知道 你想要保留哪一份 index.html 文件(home.html没有冲突) ,于是,弹出对话框,让用户进行选择。

​ 所以冲突具有以下特点

  • 在文件进行合并时容易产生
  • 冲突的解决方法,只能是用户决定

1.21. 分支合并时的冲突

​ 刚才的演示,是人为手动操作导致的。当我们使用分支,进行合并的时候,也会出现冲突,只不过这次冲突的 提示框解决方法 都是通过 命令行来体现的。

1.21.1. 初始化仓库

  1. 新建一个文件夹 冲突的演示
  2. 初始化 git 仓库 git init
  3. 新建文件 index.html
  4. 添加到暂存区
  5. 提交到本地仓库
1526002222651
1526002222651

1.21.2. 开启 分支 dev

​ 初始化完仓库之后,开启分支dev,此时 分支dev 的内容和主分支master 是一模一样的

git branch dev

1526002370112
1526002370112
1526002472933
1526002472933

​ 在分支master下,

  1. 编辑 index.html 输入 主分支master下的编辑
  2. 添加到暂存区 git add *
  3. 提交到本地仓库 git commit -m "master下修改了index.html"
1526002990206
1526002990206

​ 切换到 分支 dev下

  1. 切换分支 git checkout dev

    1526003304232
    1526003304232
  2. 编辑 index.html 输入 分支dev下的编辑

  3. 添加到暂存区 git add *

  4. 提交到本地仓库 git commit -m "dev下修改了index.html"

1526003463186
1526003463186

完成了以上操作之后,主分支master和 分支dev 下的index.html 分别是

1526003571578
1526003571578

1.21.3. 合并冲突分支以及解决

此时准备分支合并,

  1. 切换回主分支 git checkout master

  2. 执行合并 git merge dev 弹出提示 文件合并产生冲突了

    1526003800813
    1526003800813
  3. 此时,手动解决冲突,打开 index.html 文件 发现

    1526004039990
    1526004039990
  4. 添加到暂存区

  5. 提交到本地仓库

    1526004176375
    1526004176375

至此,冲突的产生以及解决,演示完毕。 强烈建议 自行多练习该步骤,了解每一步的含义。

1.22. 常用git命令

注解 命令
git reset HEAD XXX 从暂存区移出
git diff 查看编辑过的文件和 版本库的区别
git config user.name xxx 配置当前仓库的用户名
git config user.email xxx 配置当前仓库的邮箱
git init 初始化 git 仓库
git add xxx 添加到暂存区
git commit -m "备注" 提交到本地仓库
git commit -m "备注" -a git add 和 git commit 的综合
git remote -v 查看远程仓库地址
git remote add 远程仓库名 远程仓库地址 添加远程仓库地址
git remote rm 远程仓库名 删除远程仓库
git remote set-url 远程仓库名 远程仓库地址 修改远程仓库地址
git push 远程仓库地址 master 提交到远程仓库
git push 远程仓库地址 master -u 提交到远程仓库 (以后 git push 即可)
git clone 远程仓库地址 克隆仓库
git pull 拉取更新
ssh-keygen -t rsa -C "邮箱地址" 生成 ssh证书
cat ~/.ssh/id_rsa.pub 查看ssh证书
git reset --hard "commit Id" 还原到某版本
git reset --hared HEAD^ 还原到上一个版本
git log 查看版本历史
git reflog 查看更强大的版本历史
git checkout 文件名 还原文件到上一个版本
git branch 分支名 创建分支
git checkout 分支名 切换到分支
git merge 分支名 合并分支
git branch 查看分支
git branch -d 分支名 删除分支

1.23. 扩展阅读

Pro Git

猴子都能看懂的git

十分钟掌握bash 命令

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,855评论 5 147
  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,497评论 0 13
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,905评论 0 11
  • HERMES,在新天地这种地方淘到的。450元,像WOC,喜欢薄薄的旧旧的感觉,所以有瑕疵也没讲价。话说,我不爱也...
    拓人86阅读 123评论 0 0
  • 01 前两天和朋友聊起我遇到的一个情商有点低的人,我提了一句:“因为他和我是一个地方的,所以哪怕不喜欢我也想先试试...
    桃宜阅读 750评论 23 16