Git 全面剖析

前言

  • 說明:本文是為了給公司員工培訓(xùn)而編寫的教程片橡,意在深度理解git原理,不適合“快餐式”學(xué)習(xí)临梗,適合“刨根問底”式學(xué)習(xí)。理解本文內(nèi)容稼跳,可以解決git常見的一切問題盟庞。

Git學(xué)習(xí)官方網(wǎng)址:https://git-scm.com/book/zh/v2

主要學(xué)習(xí)內(nèi)容:git原理、git命令岂贩。

githug游戲----git學(xué)習(xí)游戲:https://github.com/Gazler/githug

將git基本操作茫经,設(shè)計(jì)成游戲卡關(guān)的方式,主要學(xué)習(xí)git命令行萎津。

正文

一. 起步

1.1 Git工具

Git操作工具比較多卸伞,主要分為命令行和圖像化工具,本文主要介紹:iTerm2(命令行)SourceTree兩種工具锉屈。

1.1.1 命令行工具:
上面的配置工具包含:
1. iTerm2:一個終端模擬器荤傲,比macOS系統(tǒng)自帶的終端好用太多。
我剛接觸到iTerm2時的時候是極力抗拒的颈渊,但是發(fā)現(xiàn)了她的好自后遂黍,我寧愿花上20分種時間配置一個iTerm2環(huán)境出來。
具體我不多說俊嗽,誰用誰知道
2. Solarized:為iTerm2增加配色方案
3. Zsh:使用brew更新macOS自帶的zsh(brew是macOS下強(qiáng)大的包管理工具)
4. Oh My Zsh:用來管理 Zsh 配置的雾家,自帶了好用的基本配置,基本都是 Zsh 的標(biāo)配了
5. tmux:一個終端復(fù)用軟件绍豁,可將終端方案化

配置完成的效果如下:

dir.png
git.png

配置完成的效果如下:

cmder.jpg
1.1.2 圖形化工具
  • SourceTree:最好用的Git圖形化工具竹揍,沒有之一敬飒。
    官網(wǎng)地址:https://www.sourcetreeapp.com
    接下來我們以最受歡迎的Swift的http請求項(xiàng)目Alamofire為例子,查看SourceTree效果芬位。
SourceTree的UI界面.png
優(yōu)勢:
1. 強(qiáng)大的UI操作无拗,遠(yuǎn)端和本地分支清晰分明。
2. 強(qiáng)大的分支流顯示昧碉,可以顯示每個分支的狀態(tài)英染,以及合并狀態(tài)。這是我使用它的重要原因被饿。
3. 簡單四康,入門比較低,但是如果不懂git底層原理锹漱,容易造成誤操作箭养。

不足:
1. 與基本命令行相比慕嚷,功能不夠完善哥牍。
2. Git狀態(tài)顯示延時毕泌,不夠流暢。

1.2 Git配置

1.2.1 用戶信息配置

當(dāng)安裝完 Git 應(yīng)該做的第一件事就是設(shè)置你的用戶名稱與郵件地址嗅辣。 這樣做很重要撼泛,因?yàn)槊恳粋€ Git 的提交都會使用這些信息,并且它會寫入到你的每一次提交中澡谭。

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

解釋說明
--global:配置全局的信息

  • 疑惑:那我們?yōu)槭裁匆渲糜脩裘袜]箱呢愿题?
    這便于我們在提交代碼時候查看到開發(fā)者信息,方便找到提交的作者蛙奖。

git log查看git提交記錄命令中潘酗,正如Author信息所顯示:Christian Noon為作者,christian.noon@gmail.com為郵箱雁仲。

gitlog效果.png

SourceTree查看提交的作者信息仔夺,效果如下

sourcetree log.png
1.2.2 查看用戶配置信息

當(dāng)你配置完成用戶信息,想要查看用戶信息是否配置正確可以執(zhí)行一下命令

$ git config --global --list
git config.png
1.2.3 SourceTree查看配置信息

Mac版的SourceTree配置用戶名和地址如下:

sourcetree config.png

二. Git基礎(chǔ)

2.1 忽略文件

顧名思義攒砖,忽略文件缸兔,也就是不需要加入Git版本控制的文件,文件形式為.gitignore文件吹艇。比如macOS系統(tǒng)中的.DS_Store文件惰蜜。

依舊以Alamofire為例,查看他的.gitignore文件

gitignore.png

查看.gitignore文件內(nèi)容

gitignore content.png

疑惑:我的個XXX受神,這又是 . * / 什么鬼意思抛猖,那我的項(xiàng)目需要加入什么樣子內(nèi)容的.gitignore呢?

淡定路克,別急樟结,我們同性交友網(wǎng)站的大神們幫我們整理出來了網(wǎng)頁地址如下:https://github.com/github/gitignore

下面是我貼出來的部分.gitignore的文件:

gitignore list.png

找到屬于你的語言的.gitigonre文件,使用命令行工具精算,加入項(xiàng)目中瓢宦。

如果你不知道怎么創(chuàng)建.gitignore文件我也告訴你,方法如下:

1. 用命令行工具(iTerm2)打開項(xiàng)目根路徑

2. 然后 vim .gitignore 灰羽,創(chuàng)建或者編輯 .gitignore 文件

3. 然后將 gitignore 官方提供的 gitignore 提供的內(nèi)容拷貝下來驮履,
粘貼到 .gitignore 文件中,推出并且保存廉嚼。到此 .gitignore 文件添加成功

4. 你還可以用 cat .gitignore 命令查看自己的.gitignore文件是否添加正確

2.2 獲取Git倉庫

兩種方式獲取一個git倉庫

1. 在現(xiàn)有目錄中初始化倉庫

打算使用Git對現(xiàn)有項(xiàng)目進(jìn)行管理,只需要進(jìn)入該項(xiàng)目的根路徑怠噪,可以使用cd命令進(jìn)入該項(xiàng)目路徑

$ git init
git init.png

當(dāng)你完成git初始化命令之后恐似,你會發(fā)現(xiàn),在項(xiàng)目的根目錄下多了一個.git的文件夾傍念,那個git進(jìn)行版本控制的最核心的文件夾矫夷。

git dir.png

Tips:Mac如何顯示隱藏文件呢葛闷?之前一直使用命令行,我日双藕,那個方法太麻煩了∈缰海現(xiàn)在我教你一個最簡單的方法,一般人我可不告訴他忧陪,哈哈扣泊。顯示或隱藏隱藏文件快捷鍵:Command + .

2. 克隆現(xiàn)有的遠(yuǎn)端倉庫

Git 支持多種數(shù)據(jù)傳輸協(xié)議。 上面的例子使用的是 https:// 協(xié)議嘶摊,不過你也可以使用 git:// 協(xié)議或者使用 SSH 傳輸協(xié)議延蟹,比如 user@server:path/to/repo.git

// git協(xié)議
$ git clone git@github.com:Alamofire/Alamofire.git
// https協(xié)議
$ git clone https://github.com/Alamofire/Alamofire.git

克隆一個遠(yuǎn)端倉庫需要兩點(diǎn)注意的問題:

  • 克隆后的項(xiàng)目路徑問題:因?yàn)楸救擞悬c(diǎn)小潔癖,對這個克隆后的文件路徑都很嚴(yán)謹(jǐn)
    我們以克隆AlamofireImage為例子叶堆,我想在Project文件夾下等孵,克隆這個開源項(xiàng)目。
git clone exmple.png

解釋說明:

命令說明:
pwd:輸出當(dāng)前所在路徑
ls -a:查看當(dāng)前文件夾下所有的子文件

克隆結(jié)果說明:
當(dāng)前目錄下創(chuàng)建一個名為 “AlamofireImage” 的目錄蹂空,并在這個目錄下初始化一個 .git 文件夾俯萌,
從遠(yuǎn)程倉庫拉取下所有數(shù)據(jù)放入 .git 文件夾,然后從中讀取最新版本的文件的拷貝上枕。 
如果你進(jìn)入到這個新建的 AlamofireImage 文件夾咐熙,你會發(fā)現(xiàn)所有的項(xiàng)目文件已經(jīng)在里面了,
準(zhǔn)備就緒等待后續(xù)的開發(fā)和使用辨萍。
  • 克隆方式選擇:https方式一般需要輸入賬號密碼棋恼,git方式需要配置ssh。
3. 使用SourceTree克隆遠(yuǎn)端倉庫

點(diǎn)擊順序:新倉庫->從URL克隆锈玉,彈出第二個頁面爪飘。

git clone sourcetree1.png

克隆倉庫時,輸入信息說明:

源URL:是遠(yuǎn)程倉庫地址
目標(biāo)路徑:你想要在電腦磁盤保存的路徑拉背,這里需要自己增加項(xiàng)目倉庫的名稱
名稱:項(xiàng)目倉庫的名稱

注意事項(xiàng):第一次克隆項(xiàng)目如果是https需要輸入用戶名和密碼师崎,如果是git方式
并且你的ssh密鑰有密碼需要你輸入密碼。
git clone sourcetree2.png

2.2 記錄每次更新到倉庫

2.2.1 文件狀態(tài)查看
  • 請記住椅棺,你工作目錄下的每一個文件都不外乎這兩種狀態(tài):已跟蹤或未跟蹤
    • 未跟蹤:Untracked(未跟蹤)

    • 已經(jīng)跟蹤:Unmodified(未修改)犁罩、Modified(已修改)、Staged(已暫存)

    • 總結(jié):第一次理解這個圖片比較難两疚,但是理解之后床估,你就會發(fā)現(xiàn),對于git文件狀態(tài)你就完全掌握诱渤。

git status

各種狀態(tài)剖析:

  • Untracked(未跟蹤):
    • 新增加的文件
    • 從git跟蹤中移除(git rm --cached <file path>)

untracked.png

圖片說明:我創(chuàng)建了一個status.txt文件丐巫,在使用git status命令時,他已經(jīng)變成一個Untracked(未跟蹤)文件。

  • Staged(已暫存):
    • 使用git add命令跟蹤文件递胧,只要一個文件被git add過鸦做,它就變成Staged狀態(tài)(可以被git add狀態(tài)是UnmodifiedUntracked)

staged.png

圖片說明:圖片中的"changes to be",意思是status.txt文件已經(jīng)被暫存谓着,你可用于提交。

  • Unmodified(未修改)
    • 已經(jīng)提交的文件狀態(tài):git commit提交修改文件坛掠,文件狀態(tài)將變成此狀態(tài)赊锚。
    • 丟棄這個文件的當(dāng)前修改:git checkout -- <file path>
unmodified.png
  • Modified(已修改)
    • 已經(jīng)提交的文件,修改此文件屉栓,他會變成此狀態(tài)姜骡。
    • 已經(jīng)暫存的文件遵蚜,修改此文件,他也會變成此狀態(tài)。
Modified.png

圖片說明:我使用vim命令編輯了status.txt文件姨谷,在用git status命令查看文件狀態(tài)時,它已經(jīng)變成已修改狀態(tài)了昆汹。

2.2.2 查看文件狀態(tài)

使用git status查看項(xiàng)目所有文件狀態(tài)序矩,其中包含哪些文件時新增被修改启绰、被刪除昂儒、已暫存等等,其實(shí)就是上面四種狀態(tài)的具體形式的反應(yīng)委可。

$ git status
git status demo.png
  • SourceTree查看文件狀態(tài)

黃色的"-"號表示Modified(已修改)文件渊跋,紫色的"?"表示Untracked(未跟蹤)文件。當(dāng)然還有其他狀態(tài)文件着倾,途中沒有盡列出來拾酝。


source git status.png
2.2.3 跟蹤并暫存文件

對于新建文件,或者已經(jīng)從git跟蹤中移除的文件卡者,或者已經(jīng)修改的文件蒿囤,使用git add命令,讓他們變成已經(jīng)暫存的狀態(tài)崇决。

// 跟蹤并暫存單個文件
$ git add <file name>

// 跟蹤并暫存所有文件蟋软,常用!K宰岳守!
$ git add -A
git add.png
  • SourceTree跟蹤并暫存文件
    • 跟蹤并暫存單個文件,相當(dāng)于命令git add <file name>
    • 跟蹤并暫存所有文件碌冶,相當(dāng)于命令git add -A或者git add .
sourcetree add.png
2.2.4 查看已暫存和未暫存的修改
  • 查看未暫存的修改

盡管 git status 可以看到路徑下那些文件發(fā)現(xiàn)變動湿痢,但是我們無法知曉具體改動那一行代碼?而git diff 將通過文件補(bǔ)丁的格式顯示具體哪些行發(fā)生了改變。

// 查看未暫存文件的修改
$ git diff
git diff.png

注意事項(xiàng):"+"號標(biāo)識的是修改中增加內(nèi)容譬重,同理推測拒逮,"-"標(biāo)識的就是修改中刪除內(nèi)容

  • 查看已暫存的修改

若要查看已暫存的將要添加到下次提交里的內(nèi)容,可以用 git diff --cached 命令臀规。(Git 1.6.1 及更高版本還允許使用 git diff --staged滩援,效果是相同的,但更好記些塔嬉。)

$ git diff --cached <file path>
git diff --cached.png
  • SourceTree 查看已暫存和未暫存的修改
    點(diǎn)擊順序:文件狀態(tài)->已暫存文件(未暫存文件)->選擇具體文件名->查看文件狀態(tài)
sourcetree add file.png
2.2.5 提交更新
  • 可以提交的條件:確認(rèn)所有的新建或者修改被git add過玩徊,因?yàn)?code>git無法記錄未暫存的變動。
  • 規(guī)避提交遺漏:先用git status看下谨究,是不是都已暫存起來了恩袱,然后在運(yùn)行提交命令git commit
$ git commit
  • 注意事項(xiàng):這種提交方式會啟動文本編輯器以便輸入本次提交的說明。
git commit.png
git commit msg.png
git commit success.png
  • 圖片說明:
    • 輸入提交內(nèi)容胶哲,以"#"為開頭的行將被忽略畔塔,如果你輸入的內(nèi)容為空,提交將被中斷鸯屿。
    • 提交成功后澈吨,在反饋信息中會有本次提交的修改信息。(包含文件個數(shù)寄摆,增加行數(shù)棚辽,刪除行數(shù))

我們比較常用的方法,會在 commit 命令后添加 -m 選項(xiàng)冰肴,將提交信息與命令放在同一行屈藐,如下所示:

$ git commit -m "<commit message>"
git commmit -m.png
  • 使用SourceTree提交,三部曲:
sourcetree commit.jpg
2.2.5 移除文件
  • 移除文件的三種方式
    • rm <file path>: 將文件只從磁盤中移除
    • git rm --cached <file path>:將文件只從git暫存中移除
    • git rm <file path>:相當(dāng)于上面兩個操作的合并熙尉,將文件從磁盤和git暫存中同時移除联逻。

2.3 查看提交歷史

這邊涉及的知識點(diǎn)比較零散,一般使用者只要知道基本命令就行检痰,不做詳細(xì)的說明包归。
具體可以看官網(wǎng)教程,我在這邊附上鏈接:官方文檔-查看提交歷史铅歼。

  • 查看最基礎(chǔ)的git提交記錄
// 查看提交記錄公壤,最簡單的數(shù)據(jù)呈現(xiàn)
$ git log
git log.png
  • 查看前某幾次的提交的變動
// 參數(shù)說明:"-1"表示最后一次提交的變動,以此類推"-2"則是最后兩次提交的變動
$ git log -p -1
// 查看作者為caiqiujun的椎椰,提交前最后一次的變動
git log --author=caiqiujun -p -1
git log -p -1.png
  • 查看某個文件的變動記錄(俗稱:找鍋)
// file path為文件路徑
$ git log -p -- <file path>
git log -p -filename.png
  • 查看分支的圖形化變動

目的:分析當(dāng)前分支的合并情況

$ git log --graph
git log --graph.png
  • SourceTree 查看歷史變動情況厦幅,三部曲:
sourcetree log.png

2.4 撤消操作

2.4.1 將修改補(bǔ)充到上次提交中

有時候我們提交完了才發(fā)現(xiàn)漏掉了幾個文件沒有添加,或者提交信息寫錯了慨飘。 此時确憨,可以運(yùn)行帶有 --amend 選項(xiàng)的提交命令嘗試重新提交:

$ git commit --amend
git commit --amend.png

圖片說明:

  1. vim編輯 forget.txt 文件
  2. git add -A 將文件暫存
  3. git status 查看文件狀態(tài)译荞,確認(rèn)文件已經(jīng)暫存
  4. git commit --amend 將forget.txt提交到上次提交中
2.4.2 撤消對文件的修改
  • 需要撤銷的文件--未暫存

有時候我們需要,放棄對某個未暫存文件的修改休弃,可以使用git checkout 命令丟棄文件修改吞歼,這是一個很危險的命令,一旦丟棄就無法找回塔猾。

git checkout --filename.png

圖片說明:

  1. git status查看文件forget.txt文件是已修改狀體
  2. git checkout -- <file name> 撤銷該文件修改
  3. git status 在此查看文件狀態(tài)篙骡,已經(jīng)沒有被修改的文件了,對forget.txt文件修改撤銷成功丈甸。
  • 需要撤銷的文件--已暫存
git reset HEAD.png

圖片說明:

  1. git status 查看文件狀態(tài)糯俗,forget.txt為已經(jīng)暫存的修改
  2. git reset HEAD <filename> 放棄暫存文件
  3. git status 查看文件是否已經(jīng)變成未暫存狀態(tài)
  4. 再調(diào)用上一小節(jié) git checkout -- <file name> 撤銷對文件的修改。
2.4.3 SourceTree 撤銷操作
  • 將忘記提交的文件補(bǔ)充到賞賜提交中老虫,類似于git commit --amend
sourcetree git commit amend.png
  • 撤銷該文件的修改,到賞賜提交的狀態(tài)茫多,類似于 git checkout -- <filename>
sourcetree checkout -- filename.png
  • 將文件變成未暫存文件祈匙,類似于git reset HEAD <filename>
sourcetree reset HEAD.png

2.5 遠(yuǎn)程倉庫的使用

2.5.1 查看遠(yuǎn)程倉庫

如果想查看你已經(jīng)配置的遠(yuǎn)程倉庫服務(wù)器,可以運(yùn)行 git remote -v 命令天揖,會顯示需要讀寫遠(yuǎn)程倉庫使用的 Git 保存的簡寫與其對應(yīng)的 URL夺欲。

$ git remote -v 
git remote -v.png
2.5.2 添加遠(yuǎn)程倉庫

運(yùn)行 git remote add <shortname> <url> 添加一個新的遠(yuǎn)程 Git 倉庫,同時指定一個你可以輕松引用的簡寫:


git remote add.png
2.5.3 從遠(yuǎn)程倉庫中抓取與拉取

從遠(yuǎn)程倉庫中獲得數(shù)據(jù)今膊,可以執(zhí)行:

$ git fetch [remote-name]

這個命令會訪問遠(yuǎn)程倉庫些阅,從中拉取所有你還沒有的數(shù)據(jù)。 執(zhí)行完成后斑唬,你將會擁有那個遠(yuǎn)程倉庫中所有分支的引用市埋,可以隨時合并或查看。

必須注意 git fetch 命令會將數(shù)據(jù)拉取到你的本地倉庫 - 它并不會自動合并或修改你當(dāng)前的工作恕刘。 當(dāng)準(zhǔn)備好時你必須手動將其合并入你的工作 缤谎。

運(yùn)行 git pull 通常會從最初克隆的服務(wù)器上抓取數(shù)據(jù)并自動嘗試合并到當(dāng)前所在的分支

$ git pull [remote-name]

這個操作比較危險褐着,因?yàn)樗龝詣訋湍愫喜⒖涝瑁蛟S有時候你只想看看遠(yuǎn)端倉庫,有沒有其他開發(fā)者更新了代碼而已含蓉。

2.5.4 遠(yuǎn)程倉庫的移除與重命名

如果想要重命名引用的名字可以運(yùn)行 git remote rename 去修改一個遠(yuǎn)程倉庫的簡寫名频敛。

$ git remote rename [old-name] [new-name]
git remote rename [old] [new].png

如果因?yàn)橐恍┰蛳胍瞥粋€遠(yuǎn)程倉庫,可以使用 git remote rm [remote-name]

$ git remote rm [remote-name]
git remote rm.png
2.5.5 SourceTree 遠(yuǎn)端倉庫操作
  • 配置遠(yuǎn)端倉庫

首先看遠(yuǎn)端倉庫的增刪改查:設(shè)置->遠(yuǎn)端倉庫->其他操作...


sourcetree remote -v.png
  • 執(zhí)行抓取操作

注意點(diǎn):一定要勾選第二復(fù)選框馅扣。

比如:團(tuán)隊(duì)里面其他開發(fā)者刪除了一些遠(yuǎn)端分支斟赚,在你的git遠(yuǎn)端分支依然還顯示者那些分支。如果你嘗試勾選它時差油,在抓取一次汁展,你就會發(fā)現(xiàn)那些已經(jīng)刪除的分支消失了。

sourcetree fetch.png
  • 執(zhí)行拉取操作
sourcetree pull.png

三. Git 分支

3.1 分支簡介

分支原理介紹請參照官網(wǎng):官網(wǎng)地址

3.1.1 分支創(chuàng)建

創(chuàng)建分支,原理就是創(chuàng)建一個新的可以移動的分支食绿。如下命令是創(chuàng)建一個testing分支

$ git branch testing

注意事項(xiàng)

  1. 創(chuàng)建分支之前最好保證所有修改已經(jīng)提交侈咕,即工作樹是干凈的。
  2. 創(chuàng)建新分支時器紧,會拷貝當(dāng)前分支代碼耀销。(從分支原理可以解釋)
  3. 創(chuàng)建分支后,不會主動切換到新建分支上铲汪,必須執(zhí)行git checkout [branch-name]命令切換分支熊尉。如果你想創(chuàng)建一個新分支,并切換到新分支上可以執(zhí)行git checkout -b testing 命令
git branch [branch-name].png

3.2 分支合并

如果你想將testing分支修改的內(nèi)容合并到master主分支上掌腰,你可以執(zhí)行以下操作:

// 切換到master分支
$ git checkout master
// 將testing分支合并到master分支
$ git merge testing
git merge testing.png

注意事項(xiàng)

  1. 創(chuàng)建分支之前最好保證所有修改已經(jīng)提交狰住,即工作樹是干凈的。
  2. 分支合并完成如果有沖突齿梁,需要解決沖突催植,在作出一次新的提交。
  • 沖突原因

兩個分支不同的代碼塊修改了同一代碼區(qū)域勺择,git不能判斷需要保留哪個分支的提交创南。

  • 沖突案例分析
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
 please contact us at support@github.com
</div>
>>>>>>> iss53:index.html
  • 沖突區(qū)域模型
<<<<<<< 分支A

[沖突代碼塊]

=======

[沖突代碼塊]

>>>>>>> 分支B

解決沖突步驟

  1. 讀懂沖突代碼實(shí)現(xiàn)的功能
  2. 構(gòu)建最終需要的代碼
  3. 刪除沖突標(biāo)記<<<<<<<(沖突開始標(biāo)記) 、=======(兩個沖突分割標(biāo)記) 省核、>>>>>>>(沖突開始結(jié)束) 稿辙,最終讓整個文件變成一個正常的代碼文件。
  4. git add 緩存修改气忠,git commit 完成沖突修改提交

3.3 分支管理

3.3.1 查看本地分支

如果你想查看你的本地有哪些分支邻储,你可以使用以下命令:

$ git branch
3.3.2 過濾已經(jīng)合并或尚未合并到當(dāng)前分支的分支

如果要查看哪些分支已經(jīng)合并到當(dāng)前分支,可以運(yùn)行 git branch --merged:

$ git branch --merged
  iss53
* master

查看所有包含未合并工作的分支旧噪,可以運(yùn)行 git branch --no-merged:

$ git branch --no-merged
  testing

如果未合并的分支芥备,無法正常刪除。如果需要強(qiáng)制刪除使用git branch -D [branch-name]

$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.

3.4 遠(yuǎn)程分支

遠(yuǎn)程跟蹤分支是遠(yuǎn)程分支狀態(tài)的引用舌菜。 它們是你不能移動的本地引用萌壳,當(dāng)你做任何網(wǎng)絡(luò)通信操作時,它們會自動移動日月。 遠(yuǎn)程跟蹤分支像是你上次連接到遠(yuǎn)程倉庫時袱瓮,那些分支所處狀態(tài)的書簽。

本篇文章持續(xù)更新中爱咬,有什么意見可以提尺借,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末精拟,一起剝皮案震驚了整個濱河市燎斩,隨后出現(xiàn)的幾起案子虱歪,更是在濱河造成了極大的恐慌,老刑警劉巖栅表,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笋鄙,死亡現(xiàn)場離奇詭異,居然都是意外死亡怪瓶,警方通過查閱死者的電腦和手機(jī)萧落,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洗贰,“玉大人找岖,你說我怎么就攤上這事×沧蹋” “怎么了许布?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绎晃。 經(jīng)常有香客問我蜜唾,道長,這世上最難降的妖魔是什么箕昭? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任灵妨,我火速辦了婚禮解阅,結(jié)果婚禮上落竹,老公的妹妹穿的比我還像新娘。我一直安慰自己货抄,他們只是感情好述召,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蟹地,像睡著了一般积暖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怪与,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天夺刑,我揣著相機(jī)與錄音,去河邊找鬼分别。 笑死遍愿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耘斩。 我是一名探鬼主播沼填,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼括授!你這毒婦竟也來了坞笙?” 一聲冷哼從身側(cè)響起岩饼,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎薛夜,沒想到半個月后籍茧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡却邓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年硕糊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腊徙。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡简十,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出撬腾,到底是詐尸還是另有隱情螟蝙,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布民傻,位于F島的核電站胰默,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏漓踢。R本人自食惡果不足惜牵署,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喧半。 院中可真熱鬧奴迅,春花似錦、人聲如沸挺据。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扁耐。三九已至暇检,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間婉称,已是汗流浹背块仆。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留王暗,地道東北人悔据。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像瘫筐,于是被迫代替她去往敵國和親蜜暑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Git是目前最流行的版本管理系統(tǒng)策肝,也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,699評論 1 17
  • 還憶少兒爛漫時肛捍, 窗前知了共吟詩隐绵。 放學(xué)路上追蝶戲, 手把蜻蜓細(xì)品思拙毫。 掏蛋樹枝驚鳥喚依许, 溪中垂釣也歸遲。 童心未...
    YYC011閱讀 531評論 0 0
  • 寂寞悲傷 仰天一笑 淚光寒 少
    51314z21閱讀 215評論 0 0
  • 我為夜色中殘疾的賣水人 為他蜷曲的四肢嘶啞的嗓子而躊躇 為他潔白的滄桑與負(fù)隅頑抗的倔而淚迷 我為一顆心粗糙的同情 ...
    昕夕小兔閱讀 473評論 1 1