Git

Shell和vi

shell

在計算機科學中,Shell俗稱殼,用來區別于Kernel(核),是指“提供使用者使用界面”的軟件(命令解析器)。它類似于DOS下的command和后來的cmd.exe。它接收用戶命令,然后調用相應的應用程序

shell的分類

  • 圖形界面shell:通過提供友好的可視化界面,調用相應應用程序,如windows系列操作系統,Linux系統上的圖形化應用程序GNOME、KDE等.
  • 命令行shell:通過鍵盤輸入特定命令的方式,調用相應的應用程序,如windows系統的cmd.exe、Windows PowerShell,Linux系統的Bourne shell ( sh)、Bourne Again shell ( bash)等。

認識bash這個shell

在window系統下使用bash,需要一個軟件,這個軟件模擬集成了bash大部分命令。
各個 shell 的功能都差不多, Linux 默認使用 bash ,所以我們主要學習bash的使用。

  • 1 bash命令格式
    命令 [-options] [參數],如:tar zxvf demo.tar.gz
    查看幫助:命令 --help
  • 2 bash常見命令
命令 描述 舉例
pwd (Print Working Directory) 查看當前目錄
cd (Change Directory) 切換目錄, 如 cd /etc
ls (List) 查看當前目錄下內容, 如 ls -al
mkdir (Make Directory) 創建目錄, 如 mkdir blog
touch 創建文件, 如 touch index.html
cat 查看文件全部內容, 如 cat index.html
more/less 查看文件, 如more /etc/passwd、less /etc/passwd
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
tail 查看文件后幾行 –n –f, 如 tail index.html、tail -f -n 5 index.html
tab 自動補全,連按兩次會將所有匹配內容顯示出來
history 查看操作歷史
> 和 >> 重定向, 如echo hello world! > README.md ,>覆蓋 >>追加
wget 下載, 如wget https://nodejs.org/dist/v4.4.0/node-v4.4.0.tar.gz
tar 解壓縮, 如tar zxvf node-v4.4.0.tar.gz
curl 網絡請求, 如curl http://www.baidu.com
whoami 查看當前用戶

管道符可以將多個命令連接使用,上一次(命令)的執行結果當成下一次(命令)的參數。
grep 匹配內容,一般結合管道符使用

vi 編輯器

如同Windows下的記事本,vi編輯器是Linux下的標配,通過它我們可以創建、編輯文件。它是一個隨系統一起安裝的文本編輯軟件.

三種模式

vi編輯器提供了3種模式,分別是命令模式、插入模式、底行模式,每種模式下用戶所能進行的操作是不一樣的。
3種模式的切換如下圖所示

三種模式.jpg

通過上圖我們發現,輸入模式是不能直接切換到末行模式的,必須要先切回到命令模式(按ESC鍵)

使用vi編輯器

  • a) 打開/創建文件, vi 文件路徑
  • b) 底行模式 :w保存,:w filenme另存為
  • c) 底行模式 :q退出
  • d) 底行模式 :wq保存并退出
  • e) 底行模式 :e! 撤銷更改,返回到上一次保存的狀態
  • f) 底行模式 :q! 不保存強制退出
  • g) 底行模式 :set nu 設置行號
  • h) 命令模式 ZZ(大寫)保存并退出
  • i) 命令模式 u轍銷操作,可多次使用
  • j) 命令模式 dd刪除當前行
  • k) 命令模式 yy復制當前行
  • l) 命令模式 p 粘貼內容
  • m) 命令模式 ctrl+f向前翻頁
  • n) 命令模式 ctrl+b向后翻頁
  • o) 命令模式 i進入編輯模式,當前光標處插入
  • p) 命令模式 a進入編輯模式,當前光標后插入
  • q) 命令模式 A進入編輯模式,光標移動到行尾
  • r) 命令模式 o進入編輯模式,當前行下面插入新行
  • s) 命令模式 O進入編輯模式,當前行上面插入新行
    當我們處在編輯模式的情況下,和我們在Windows編輯器的使用相似

SSH

SSH是一種網絡協議,用于計算機之間的加密登錄。
SSH只是一種協議,存在多種實現,既有商業實現,也有開源實現。本文針對的是OpenSSH,它是自由軟件,應用非常廣泛。
如果要在Windows系統中使用SSH,會用到另一種軟件PuTTY,我們后面用到的Git客戶也集成了SSH
格式:ssh user@host
user 代表真實存在的用戶host代表要登錄的遠程計算機
常見有兩種加密技術,分別是對稱性加密非對稱性加密,SSH屬于后者。
對稱加密算法在加密和解密時使用的是同一個密鑰;而非對稱加密算法需要兩個密鑰來進行加密和解密,這兩個秘鑰分別是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)。
工作原理
公鑰和私鑰是成對出現,可以通過ssh-keygen -t rsa來創建,既可以通過密鑰來加密數據,也可以通過私鑰來加密數據,如果是以公鑰進行的數據加密,只能與之相對應的私鑰才可以解密,相反如果以私鑰進行的數據加密,則只能與之對應的公鑰才可以將數據進行解密,這樣就可以提高信息傳遞的安全性。
免密碼登錄
我們可以將本地機器上的公鑰保存到特定的遠程計算機上,這樣當我們再次登錄訪問這臺遠程計算機時就可以實現免密碼登錄了。

  • 1、ssh-keygen -t rsa會創建公鑰和密鑰(默認在用戶目錄/.ssh目錄下)
  • 2、ssh-copy-id user@host添加到對應遠程主機的用戶目錄/.ssh目錄下
  • 3、也可以登錄遠程主機,進入到用戶目錄/.ssh目錄下手動創建authorized_keys文件,并將自已的公鑰粘入該文件。

版本控制

關于版本控制

版本控制(Version Control Systems)是一種記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的系統。這個系統可以自動幫我們備份文件的每一次更改,并且可以非常方便的恢復到任意的備份(版本)狀態。
舉例:我們通常都是手動的重命名一個文件進行備份的,index.html改成index1.html或者index.html.bak等形式,然后這種方式對于單個文件我們還能夠管理,但是對于整個項目而言,就會成為噩夢了?。?!我們不得不借助于軟件來實現。
實現版本控制的軟件有很多種類,大致可以分為本地版本控制系統、集中式版本控制系統、分布式版本控制系統。

本地版本控制

借助軟件我們可以記錄下文件的每一次修改,如下圖所示,文件被修改后,記錄下了3個版本,這樣我們通過版本控制系統(軟件)便可以非常方便的恢復到任意版本。

版本控制1.jpg

這種類型的版本控制系統,功能比較單一,比如很難實現多人協同開發,所以現在幾乎很少使用了。

集中式版本控制

實際開發環境,一個項目通常是由多人協作共同完成的,如何讓在不同終端上的開發者協同工作成了亟待解決的問題,集中式版本控制系統便應運而生了。它通過單一的集中管理的服務器,保存所有文件的修訂版本,協同工作的開發者都通過客戶端連到這臺服務器,取出最新的文件或者提交更新。其代表為SVN,如下圖所示

版本控制2.jpg

這種方式很好解決了多人協同開發的問題,但是也有一個弊端,如果集中管理的服務器出現故障,將會導致數據(版本)丟失的風險,另外協同開發者從集中服務器中更新數據時,嚴重依賴網絡,如果網絡不佳,也給開發帶來諸多不便。

分布式版本控制系統

分布式版本控制系統,則不需要中央服務器,每個協同開發者都擁有一個完整的版本庫,這么一來,任何協同開發者用的服務器發生故障,事后都可以用其它協同開發者本地倉庫恢復。
由于版本庫在本地計算機,也便不再受網絡影響了。如果要將本地的修改,推送給其它協同開發者,還需要一臺共享服務器,所有開發者通過這臺共享服務器同步和更新數據。如下圖所示。

版本控制3.jpg

分布式版本控制系統彌補了前面兩種版本控制系統的缺陷,成為了版本控制的首選方案。其代表就是Git

Git

window安裝
http://git-scm.com/download/win下載Git客戶端軟件,和普通軟件安裝方式一樣。
Linux安裝
CentOS發行版:sudo yum install git
Ubuntu發行版:sudo apt-get install git
Mac安裝
打開Terminal直接輸入git命令,會自動提示,按提示引導安裝即可。

Git工作原理

為了更好的學習Git,我們們必須了解Git管理我們文件的3種狀態,分別是已提交(committed)、已修改(modified)和已暫存(staged),由此引入 Git 項目的三個工作區域的概念:Git 倉庫工作目錄以及暫存區域。
Git倉庫目錄是Git用來保存項目的元數據和對象數據庫的地方。 這是Git 中最重要的部分,從其它計算機克隆倉庫時,拷貝的就是這里的數據。
工作目錄是對項目的某個版本獨立提取出來的內容。這些從Git倉庫的壓縮數據庫中提取出
來的文件,放在磁盤上供你使用或修改。
暫存區域是一個文件,保存了下次將提交的文件列表信息,一般在Git倉庫目錄中。有時候也被稱作“索引”(Index),不過一般說法還是叫暫存區域。

Git1.jpg

基本的Git工作流程如下:

  • 1、在工作目錄中修改文件。
  • 2、暫存文件,將文件的快照放入暫存區域。
  • 3、提交文件,找到暫存區域的文件,將快照永久性存儲到Git倉庫目錄。

Git本地倉庫

Git本地倉庫值得是開發者開發設備中倉庫

Git基礎

命令行方式:任意目錄(建議開發根目錄)右鍵 > Git Bash Here

1.配置用戶

配置用戶的意義在于記錄開發者信息,以便在版本控制記錄開發者的操作行為,如lion于2016-08-24解決了一個bug。
git config --global user.name "自已的名字"
git config --global user.email"自已的郵箱地址"
--global 配置當前用戶所有倉庫
--system 配置當前計算機上所有用戶的所有倉庫
注:配置用戶只需要執行1次,可以重復使用。

2.初始化倉庫

我們如果想要利用git進行版本控制,需要將現有項目初始化為一個倉庫,或者將一個已有的使用git進行版本控制的倉庫克隆到本地.

  • git init

Git02.png

git init只是創建了一個名為.git的隱藏目錄,這個目錄就是存儲我們歷史版本的倉庫,ls -al可以查看。

Git03.png
  • 假如公司已有項目用了Git,那我們就利用克隆
    git clone倉庫地址

Paste_Image.png

執行完這個命令,會在當前目錄下生成一個Monment目錄(默認和倉庫名稱相同),這個便是已有一個使用Git管理的項目

Git04
查看文件狀態

初始化倉庫后便可以進行開發了,進入到剛剛創建好并初始為倉庫的目錄,添加我們開發需要的文件。
通過git status可以檢測當前倉庫文件的狀態

Git05.png

:git會忽略空的目錄

4.添加文件到暫緩區

假設經過一段時間的開發后,需要把已開發的部分存起來,使用git add 添加到暫存區。
git add 文件名/ 文件路徑 “*”或-A代表所有

Git06.png

放到暫存區的文件被標記成了綠色,等待提交。
:顏色是工具給添加的,目的是增加可讀性并不是git統一的。

5、撤銷更改

繼續我們的開發
再次git status可以再次查看倉庫狀態

Git.07png

說明index.html再次被修改了,并被標記了紅色。
又經過一段時間后發現新開發的部分有Bug,想要回到之前狀態,可以使用git checkout 文件名.

Git08.png

:從暫存區還原原到工作區

5.提交文件

經過一個相對較長階段開發或者一個功能開發完成了,就可以提交到本地倉庫了,永久保存了。
git commit -m '備注信息'

Paste_Image.png

將暫存區被標記成綠色的文件,全部提交到本地倉庫存儲。
這時git status查看狀態

Git08.png

沒有什么可提交的,變的很干凈.

6.查看提交歷史

反反復復開發了很多的功能了,通過git log查看一下提交的歷史

Git09.png

我們可以查看到一次次提交記錄
commit 81b1e4fc2ae178caedf4575596377a80a6f1e73f
代表一次提交的唯一ID,一般稱為SHA值。傻?
:按鍵盤q鍵退出。

7.再次檢測倉庫文件狀態

隔了好些天后,繼續開發
git status 查看狀態

Git10.png

又提示有修改,等待重新添加到暫存區.

8.重新添加暫存區然后提交
Git11.png
9.再次查看歷史

git log 可查到所有提交歷史

Git12.png

這時可以查看到更多提交歷史。
這時關掉所有目錄甚至關機!

10.恢復上一次提交的狀態

通過SHA值可以回到之前某一次的提交(時光倒流)
git reset --hard c888a614e072e2這樣便回到了支付功能的狀態
git log再次查看發現最后一次提交成了支付功能了

Git13.png
倉儲示意圖.jpg
Git分支

在我們的現實開發中,需求往往是五花八門的,同時開發個需求的情況十分常見,比如當你正在專注開發一個功能時,突然有一個緊急的BUG需要你來修復,這個時候我們當然是希望在能夠保存當前任務進度,再去修改這個BUG,等這個BUG修復完成后再繼續我們的任務。如何實現呢?
通過Git創建分支來解決實際開發中類似的問題。
在Git的使用過程中一次提交稱為歷史記錄(版本),并且會生成一個唯一的字符串,如下圖

Git14.png

這個串可以代表某一個歷史版本(實際使用只取前面幾位就可以),
值得注意的是所有的提交(commit)實際上都是在分支(branch)的基礎上進行的。

Git..jpg

當我們在初始化倉庫的時候(實際上是產生第1次提交時),Git會默認幫我們創建了一個master的分支,并且有指針(HEAD)指到了末端。
指針(HEAD)用來標明當前處于哪個分支的哪個版本,如上圖指的處于master分支的最后1個版本。
我們也可以創建自已的分支

1、創建分支

git branch hotfix
新的分支會在當前分支原有歷史版本的結點上進行創建,我稱其為子分支如下圖

branch2.jpg

新建的子分支會繼承父分支的所有提交歷史。

2.切換分支

git checkout hotfix

branch3.jpg

我們發現HEAD現在又指向了hotfix的末端。

3.再次提交操作

修改bug后,提交

branch4.jpg

這次的提交歷史版本就會記錄在hotfix這個分支上了,并且HEAD伴隨hotfix在移動

4.當我們再次切回到master時
branch5.jpg

當我們切換回master后,HEAD指向了master分支的末端,并且我們觀察發現我們的文件內容還是原來的“模樣”。

5.繼續之前的開發

branch6.jpg

總結:當我們git checkout branchname時,HEAD會自動指向對應分支的末端,工作目錄中的源碼也會隨之發生改變。
這個時候我們就在hotfix這個分支上修復了這個BUG,而我們原來在master分支上的操作并未受到影響。
思考一個問題:
現在master這個分支上是否包含了hotfix的修復呢?
實際上從上圖可以看出這時的master分支并沒有包含有hotfix的修復

6.合并(融合)分支

branch7.jpg

這時master會有兩個父結點了,master便包含了`hotfix里的修復了

7.刪除分支

git branch -d hotfix
這時用來修復BUG創建的hotfix分支已經沒有用處了,我們可以將它刪除

branch9.jpg

Git遠程(共享)倉庫

通過上面學習我們可以很好的管理本地版本控制了,可是如果我們下班回到家里突然來了靈感覺得有部分代碼可以優化,如果能接著公司電腦上的代碼繼續寫該有多好呀!另一種情形,假設項目比較大,不同的功能模塊由不同的開發人員完成,不同模塊兒之間又難免會依賴關系,這時如果我們的代碼互相合并(融合)該有多好呀!所有模塊開發完畢后,需要整合到一起,要能做到準確無誤該有多好呀!

借助一個遠程倉庫,大家可以共享代碼、歷史版本等數據,便可以解決以上遇到的所有問題,在學習遠程倉庫前我們先來學習git clone path這個命令。

創建共享倉庫

Git要求共享倉庫是一個以.git結尾的目錄。

mkdir repo.git 創建以.git結尾目錄

cd repo.git 進入這個目錄

git init --bare 初始化一個共享倉庫,也叫裸倉庫 注意選項--bare

共享倉儲

這樣我們就建好了一個共享的倉庫,但這時這個倉庫是一個空的倉庫,并且不允在這個倉庫中進行任何修改

向共享倉庫共享(同步)內容

將自已開發的項目同步到這個目錄中,其它開發者就可以共享你開發的項目了。

  • 1、進入到yike目錄
  • 2、git push ../repo.git master
共享倉庫

這樣便把yike中的項目同步進了repo.git中。

5.從共享倉庫里取出內容

1、新創建一個目錄(模擬另一個開發者)
2、git clone ./repo.git demo

共享提取.png

通過repo.git共享倉庫,我們輕松得到了一個yike的副本

6.通過demo倉庫向repo.git共享內容

進入到demo里,我們做一些修改
cd demo
git push ../repo.git master

共享內容.png
7.在360倉庫從repo.git獲取共享的內容

cd yike
git pull ../repo.git master

獲取共享.png

奇跡似乎發生了,我們輕松的將demo倉庫里的內容,通過repo.git共享給了yike倉庫。
驚喜不斷,問題也總是不斷,我們發現我們這個共享的倉庫只是放到了本地的,其它人是沒有辦法從我們這個共享倉庫共享內容的?。?!
然而現實是,辦法總是有的?。。。?br> 我們把這個共享的倉庫放到一臺遠程服務器上,問題不就解決了嗎?

gitHub和gitLab

如果我們熟悉服務器的話,我們完全可以將上述的步驟在我們的遠程服務器上進行操作,然后再做一些登錄權限的設置,就可非常完美的搭建一個共享服務器了。其實為了更好的管理我們的倉庫,一些第三方機構開發出了Web版倉庫管理程序,通過Web界面形式管理倉庫。
gitHub關于它的名氣與意義,大家可以自行查閱,我們這里介紹它的使用

1、注冊賬號并完善資料
自行注冊略過
2、創建共享倉庫

git.png

3、填寫倉庫資料

git1

4、共享倉庫

git2

遠程地址特別長,我們可以給他起一個別名

git remote add origin

git@github.com:Botue/repo.git

這樣origin 就代表 git@github.com:Botue/repo.git

當我們通過git clone從共享倉庫獲內容時,會自動幫我們添加origin到對應的倉庫地址,例如:git clone git@github.com:Botue/repo.git 會自動添加origin 對應 git@github.com:Botue/repo.git

5、生成密鑰
ssh-keygen -t rsa然后一路回車,這里會在當前用戶生成了一個.ssh的文件夾

git3

id_rsa.pub公鑰的內容復制

打開gitHub的個人中心

git4

打到SSH keys

git5

到此我們便可以通過gitHub 提供的Web界面來管理我們的倉庫了。

我們發現通過gitHub管理倉庫實在是太方便了,可是只能免費使用公開倉庫,自已公司的代碼當然不能公開了,可是私有倉庫又是需要交“保護費”的,無耐國人還是比較喜歡免費的,網絡界總是有很多雷峰的,比如gitLab!!!

gitLab也是一個可以通過Web界面管理倉庫的網站程序,我們可以把它架設到公司自已的服務器上,實現倉庫私有化,這也是大部分公司通常采用的方法,其使用方法與gitHub十分相似。

我將閑置電腦配置成了一臺服務器,上面架設了gitLab程序,我們接下來的練習全部會在gitLab上進行演示。

命令匯總
命令 描述
git config 配置本地倉庫,常用git config --global user.name、git config --global user.email
git config --list 查看配置詳情
git init 初始一個倉庫,添加--bare可以初始化一個共享(裸)倉庫
git status 可以查看當前倉庫的狀態
git add“文件” 將工作區中的文件添加到暫存區中,其中file可是一個單獨的文件,也可以是一個目錄、“*”、-A
git commit -m '備注信息' 將暫存區的文件,提交到本地倉庫
git log 可以查看本地倉庫的提交歷史
git branch 查看分支
git branch“分支名稱” 創建一個新的分支
git checkout“分支名稱” 切換分支
git checkout -b deevelope r 他健并切到developer分支
git merge“分支名稱” 合并分支
git branch -d “分支名稱” 刪除分支
git clone “倉庫地址” 獲取已有倉庫的副本
git push origin “本地分支名稱:遠程分支名稱” 將本地分支推送至遠程倉庫,
git push origin hotfix(通常的寫法) 相當于git push origin hotfix:hotfix, git push origin hotfix:newfeature

本地倉庫分支名稱和遠程倉庫分支名稱一樣的情況下可以簡寫成一個,即git push “倉庫地址” “分支名稱”,如果遠程倉庫沒有對應分支,將會自動創建

git remote add “主機名稱” “遠程倉庫地址”添加遠程主機,即給遠程主機起個別名,方便使用

git remote可以查看已添加的遠程主機
git remote show “主機名稱”可以查看遠程主機的信息

GitLab完整演示

沒錯,Git非常強大!
但是,如果我們的分支不加以規范管理,也
有可能適得其反!

  • 1、不要有太多的樹杈(子分支)
  • 2、要有一個“穩定分支”,即master分支不要輕意被修改
  • 3、要有一個開發分支(developer),保證master分支的穩定性
  • 4、所有的功能分支(feature)從developer創建
  • 5、所有功能開發完成后新建發布分支(release)


    Git工作流-1.png
Git工作流-2.png
Git工作流-3.png

沖突解決

假如兩個開發同時改到同一文件的同一段內容會發生什么事情呢?

這時就會就會產生沖突了,當沖突產生后,需要開發者進行協商確認沖突的原因,然后將沖突代碼刪除重新提交就可以了。

Git高級

熟悉掌握以上操作,基本上是可以滿足日常開的需要的,但是在解決一些特殊問題時,就又需要我們能夠掌握更多的命令。

gitignore忽略文件

在項目根目錄下創建一個.gitignore文件,可以將不希望提交的羅列在這個文件里,如項目的配置文件、node_modules等
https://github.com/github/gitignore

比較差異

當內容被修改,我們無法確定修改哪些內容時,可以通過git diff來進行差異比較。
git difftool 比較的是工作區和暫存的差異
git difftool “SHA”比較與特定提交的差異
git difftool “SHA”``“SHA”比較某兩次提交的差異
git difftool 分支名稱 比較與某個分支的差異

回滾(撤銷)操作
撤銷.jpg

HEAD 默認指向當前分支的“末端”,即最后的一次提交,但是我們通過git reset 可以改變HEAD的指向。

  • 1、git reset
    --hard工作區會變、歷史(HEAD)會變, 暫存區也變
    --soft 只會變歷史(HEAD)
    --mixed(默認是這個選項)歷史(HEAD)會變、暫存區也變,工作區不變
  • 2、git checkout
    git checkout SHA -- "某個文件",代表只是從SHA這個版中取出特定的文件,
    git reset是有區別的,reset重寫了歷史,checkout則沒有。
更新倉庫

在項目開發過程中,經常性的會遇到遠程(共享)倉庫和本地倉庫不一致,我們可以通過git fetch 命令來更新本地倉庫,使本地倉庫和遠程(共享)倉庫保持一致。
git fetch “遠程主機”
或者
git fetch “遠程主機” “分支名稱”
我們要注意的是,利用git fetch 獲取的更新會保存在本地倉庫中,但是并沒有體現到我們的工作目錄中,需要我們再次利用git merge來將對應的分支合并(融合)到特定分支。如下
git pull origin 某個分支, 上操作相當于下面兩步
git fetch
git merge origin/某個分支
問題:如何查看遠程主機上總共有多少個分支?
git branch -a便可以查看所有(本地+遠程倉庫)分支了

gi

刪除遠程分支git push origin --delete 分支名稱
刪除遠程分支git push origin :分支名稱

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,692評論 9 163
  • Git是目前最流行的版本管理系統,也是最先進的分布式版本控制系統(distributed version cont...
    pro648閱讀 5,746評論 1 17
  • 可能是欣賞,欣賞你出眾的才華與氣質, 所以心生崇敬 ,樂于深交。很喜歡和你在一起時的感覺,雖然現在時不時的就會冷...
    夏味微閱讀 234評論 0 0
  • 朱梅對望云霞暖 鴛鴦依語水中天 最是夕陽魂追處 疏影踏波長歌傳
    滴答清脆閱讀 579評論 0 1
  • 朋友問我,她那是臥蠶還是眼袋,看后發現,兩者皆有,且眼袋上還帶黑眼圈,實在不雅觀,那怎么辦呢?先看一下什么是臥...
    胡蝶FS閱讀 809評論 0 7