2020-05-01 自動化運維工具

聲明:所有文章只作為學習筆記用季稳,轉載非原創(chuàng)
Ansible
http://www.ansible.com.cn/docs/intro.html
http://www.ansible.com.cn/index.html

git

官方 https://github.com/git/git/releases 
        https://mirrors.edge.kernel.org/pub/software/scm/git/ 
     ---   git 原理 對象  挺重要的原理
 https://git-scm.com/book/zh/v2/Git-%E5%86%85%E9%83%A8%E5%8E%9F%E7%90%86-Git-%E5%AF%B9%E8%B1%A1](https://git-scm.com/book/zh/v2/Git-%E5%86%85%E9%83%A8%E5%8E%9F%E7%90%86-Git-%E5%AF%B9%E8%B1%A1 

#深入理解原理
 https://www.cnblogs.com/mamingqian/p/9711975.html 
Repo是由Android開發(fā)的命令行工具,對Git部分命令進行了封裝,將百多個Git庫有效的進行組織 

我們提到了“Git數(shù)據(jù)庫”谷炸,這是什么玩意兒呢?為了能夠說清楚Git數(shù)據(jù)庫的概念社露,我們暫且引入三個Git指令,通過這三個命令,我們就能一探git數(shù)據(jù)庫的究竟他嚷。
git init  用于創(chuàng)建一個空的git倉庫默刚,或重置一個已存在的git倉庫
git hash-object  git底層命令甥郑,用于向Git數(shù)據(jù)庫中寫入數(shù)據(jù)
git cat-file  git底層命令,用于查看Git數(shù)據(jù)庫中數(shù)據(jù)

我們通過find .git命令查看新生成的空git倉庫的結構荤西,會發(fā)現(xiàn)其中有一個objects文件夾澜搅,這就是git數(shù)據(jù)庫的存儲位置伍俘。
相應的,git數(shù)據(jù)庫其實是一個簡單的“鍵值對(key-value)”數(shù)據(jù)庫
SHA-1(英語:Secure Hash Algorithm 1勉躺,中文名:安全散列算法1)是一種密碼散列函數(shù)
#object 目錄
find . -type f
./8b/aef1b4abc478178b004d62031cf7fe6db6f903
./1b/8f13ea803f6359cf903a803f48ec4c0617102b
./3c/d2954c0744aaa2846c55b77dc9d26d2dd80f9d
./01/dca2d74bbdf4f2aaad4786fbd913dd048331e5
./13/f31e5fff8d1154aca02f18ab42999a28a77f48
./31/0fc3dccef88e423f24b3b6a2486f731841daea
./2a/0a46f7c3eaa955684f6563abb0b03a5c1cc567
./2d/effe62b88231dea5b21acdcc0aa935f42115c4
./ff/0ea0f22980a1737cb805a98e57a76d0354a6f5
./35/9ea0c0b846ec137d5a3592787f3eedbc8db477
示例:這個文件存儲在以新存入數(shù)據(jù)對應hash值的前2位命名的文件夾內(nèi)癌瘾,文件名為hash值的后38位。這就是git數(shù)據(jù)庫的存儲方式饵溅,一個文件對應一條內(nèi)容妨退,就是這么簡單直接。
./35/9ea0c0b846ec137d5a3592787f3eedbc8db477
#git cat-file -t 359ea
blob
#git cat-file -p 359ea
/bin/bash4
其中蜕企,-t選項用于查看鍵值對應數(shù)據(jù)的類型咬荷,-p選項用于查看鍵值對應的數(shù)據(jù)內(nèi)容,83bba為數(shù)據(jù)鍵值的簡寫轻掩。
blob對象我們稱之為數(shù)據(jù)對象幸乒,這是git數(shù)據(jù)庫能夠存儲的對象類型之一,后面我們還會講到另外兩種對象分別是樹(tree)對象和提交(commit)對象唇牧。

我們明白罕扎,所謂跟蹤文件變更,只不過是把文件變更過程中的各個狀態(tài)完整記錄下來丐重。
 
我們模擬一次文件變更的過程腔召,看看僅僅利用git的對象數(shù)據(jù)庫能不能實現(xiàn)“跟蹤文件變更”的功能。
git數(shù)據(jù)庫存儲文件時扮惦,只關心文件內(nèi)容臀蛛,與文件的名字無關。
$echo "version 1" > file.txt
$ git hash-object -w file.txt  #利用命令寫入 echo "version 1" | git hash-object -w --stdin 效果相同
$ find .git/objects -type f
$ echo "version 2" > file.txt #修改
$git cat-file -p 83baa
version 1
$git cat-file -p 1f7a7a
version 2
我們發(fā)現(xiàn)径缅,file.txt的變更過程被完整的記錄下來了掺栅。
git cat-file -p 83baa > file.txt  #回到version1  
 
#利用樹對象(tree object)解決文件名保存和文件組織問題
Git通過樹(tree)對象將數(shù)據(jù)(blob)對象組織起來,這很類似于一種文件系統(tǒng)——blob對象對應文件內(nèi)容纳猪,tree對象對應文件的目錄和節(jié)點氧卧。一個樹(tree)對象包含一條或多條記錄,每條記錄含有一個指向blob對象或tree對象的SHA-1指針氏堤,以及相應的模式沙绝、類型、文件名鼠锈。

#通常闪檬,Git根據(jù)某一時刻暫存區(qū)所表示的狀態(tài)創(chuàng)建并記錄一個對應的樹對象,如此重復便可以依次記錄一系列的樹對象购笆。
#Git的暫存區(qū)是一個文件——.git/index
為了創(chuàng)建一個樹對象粗悯,我們需要通過暫存一些文件來創(chuàng)建一個暫存區(qū)。為此我們引入兩個命令:
git update-index     git底層命令同欠,用于創(chuàng)建暫存區(qū)
git ls-files --stage    git底層命令样傍,用于查看暫存區(qū)內(nèi)容
git write-tree            git底層命令横缔,用于將暫存區(qū)內(nèi)容寫入一個樹對象


以上我們添加了一個已經(jīng)存在在git數(shù)據(jù)庫中的文件到暫存區(qū),如果我們新建一個未曾保存到git數(shù)據(jù)庫的文件存入暫存區(qū)衫哥,進而保存為tree對象茎刚,會有什么不同嗎?我們試試看撤逢。執(zhí)行
示例:
$ echo "new file" > new
$ git update-index --add new

這說明兩個問題:
如果添加git數(shù)據(jù)庫中尚未存儲的數(shù)據(jù)到暫存區(qū)膛锭,則在執(zhí)行update-index的時候,會同時把該數(shù)據(jù)保存到git數(shù)據(jù)庫蚊荣。
添加文件進入暫存區(qū)的操作是追加操作初狰,之前已經(jīng)加入暫存區(qū)的文件依然存在——很多人會有誤區(qū),認為變更提交之后妇押,暫存區(qū)就清空了跷究。

我們發(fā)現(xiàn),無法將一個新建的空文件夾添加到暫存區(qū)敲霍。錯誤提示告訴我們,應該將文件將文件夾中的文件加入到暫存區(qū)(add files inside instead)丁存。

#  利用提交對象(commit object)記錄版本間的時序關系和版本注釋
$ git write-tree
cb0fbcc484a3376b3e70958a05be0299e57ab495
$ git commit-tree cb0fbcc -m "first commit"
7020a97c0e792f340e00e1bb8edcbafcc4dfb60f
$ git cat-file 7020a97
-m選項用于指定本次提交的注釋肩杈。

接觸過git的小伙伴會發(fā)現(xiàn),以上我們用到的這些指令在使用git過程中是用不到的解寝。這是為什么呢扩然?因為git對以上這些指令進行了封裝,給用戶提供了更便捷的操作命令聋伦,如add夫偶,commit等。

#總結
每次我們運行 git add 和 git commit 命令時觉增, Git 所做的實質工作是將被改寫的文件保存為數(shù)據(jù)對象兵拢,更新暫存區(qū),記錄樹對象逾礁,最后創(chuàng)建一個指明了頂層樹對象和父提交的提交對象说铃。 這三種主要的 Git 對象——數(shù)據(jù)對象、樹對象嘹履、提交對象——最初均以單獨文件的形式保存在 .git/objects 目錄下腻扇。


#引用
Git的引用
Git的引用(references)保存在.git/refs目錄下。git的引用類似于一個指針砾嫉,它指向的是某一個hash鍵值幼苛。
創(chuàng)建一個引用實在再簡單不過。我們只需把一個git對象的hash鍵值保存在以引用的名字命名的文件中即可焕刮。
在此之前我們查看提交記錄需要執(zhí)行 git log 491404舶沿,現(xiàn)在只需執(zhí)行git log master舌剂。

$ echo "491404fa6e6f95eb14683c3c06d10ddc5f8e883f" > .git/refs/heads/master
$ cat .git/refs/heads/master
491404fa6e6f95eb14683c3c06d10ddc5f8e883f
Git并不提倡直接編輯引用文件,它提供了一個底層命令update-ref來創(chuàng)建或修改引用文件暑椰。
echo "491404fa6e6f95eb14683c3c06d10ddc5f8e883f" > .git/refs/heads/master 命令可以簡單的寫作:
$ git update-ref refs/heads/master 49140

Git分支霍转、tags等功能都是基于Git引用實現(xiàn)的。

安裝: https://www.cnblogs.com/wulixia/p/11016684.html 
 

操作: https://www.runoob.com/manual/git-guide/ 
            https://www.cnblogs.com/ximiaomiao/p/7140456.html  圖特別好
            https://www.cnblogs.com/WiseAdministrator/articles/11079872.html 

工作流程
 https://baijiahao.baidu.com/s?id=1622009126306324754&wfr=spider&for=pc 
![image](https://upload-images.jianshu.io/upload_images/20591801-e80a19f925db66e2?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
 https://www.cnblogs.com/WiseAdministrator/articles/11079872.html 
 https://www.cnblogs.com/videring/articles/6962005.html 

概念
 https://www.cnblogs.com/zhuwei0901-yanwu/p/9466878.html 


或許你還記得 起步 的內(nèi)容一汽, Git 保存的不是文件的變化或者差異避消,而是一系列不同時刻的 **快照** 。

https://blog.csdn.net/yangstarss/article/details/80691775
#重點:
使用git就是將本地文件(工作目錄workspace)的文件召夹,添加到暫存區(qū)(stage),然后提交到本地倉庫(repository)岩喷,最終可以協(xié)同開發(fā),推送到遠程倉庫(remote)

#git 里的基本概念組成 
第一個是你的 工作目錄监憎,它持有實際文件纱意;
第二個是 暫存區(qū)(Index),它像個緩存區(qū)域鲸阔,臨時保存你的改動偷霉;
            Index空間,也叫做stage空間褐筛,或者cache空間类少,集中了很多人對Git的誤解。
最后是 HEAD渔扎,它指向你最后一次提交的結果硫狞。

$ git ls-files --stage
 http://www.reibang.com/p/6bb76450d763 
100644 bf97e71de76bcff2bd8aba44710aa5e665eacb99 0       dir/inside.txt
100644 8231f0fdc862f06b2bd7b7bfd2f42082d3086b71 0       index.txt
上面的命令列出index中存放的信息。其中我們看到晃痴,即使我們是新checkout一個branch残吩,index也不是空白的。它目前有兩個條目倘核,每個條目分別指向一個blob對象泣侮,而且還包含該blob對象所對應的文件的路徑(分別是dir/inside.txt和index.txt)。而且這兩個blob對象對應的都是當前commit中的文件版本笤虫。

#克隆的本質
在本地clone一個上文創(chuàng)建的本地倉庫旁瘫,git clone 可以直接輸入路徑來實現(xiàn)倉庫的克隆,這與我們常見的通過url來實現(xiàn)本質是一樣的琼蚯,都是拷貝.git文件夾內(nèi)的相關內(nèi)容酬凳。 
git clone是復合指令,相當于git fetch + git merge

git版本庫遭庶,也叫做git倉庫(repository)宁仔,也就是一個文件夾。
git init命令會創(chuàng)建一個.git隱藏子目錄峦睡,這個目錄包含初始化git倉庫所有的核心文件翎苫。
此步僅僅是初始化权埠,此時項目里的代碼還沒有被git跟蹤,因此還需要git add對項目文件跟蹤煎谍,然后git commit提交到本地倉庫

添加完pub 
ssh -T git@github.com  #驗證公鑰是否添加成功

#命令行添加一個倉庫
 http://www.reibang.com/p/9d0432e2a6e5 
<meta charset="utf-8">

# 1\. git init
在項目根目目錄下(空目錄) 執(zhí)行命令`git init` 初始化一個git倉庫
.git
├── branches
├── config    這個項目獨有的配置
├── description
├── HEAD    head文件指示目前被檢出的分支
├── hooks  hooks目錄包含服務端和客戶端的鉤子腳本 hook scripts
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index  index文件保存暫存區(qū)的信息攘蔽,只有git add之后才會生成,默認還沒有這個文件
├── info    info目錄是全局性排除文件呐粘,用于放置不想被記錄在.gitignore文件中的忽略模式(ignored patterns)
│   └── exclude
├── objects  存儲所有數(shù)據(jù)內(nèi)容
│   ├── info
│   └── pack
└── refs  refs目錄存儲指向數(shù)據(jù)(分支)的提交對象的指針
    ├── heads
    └── tags

git 倉庫生命周期
還記得git的四個區(qū)域嗎满俗?本地文件夾,暫存區(qū)作岖,本地倉庫唆垃,遠程倉庫嗎?
本地文件夾未初始化痘儡,git是不認識的
本地文件git init后辕万,就成了git倉庫


#工作區(qū)
在我們進行git init mygit初始化一個git項目時,這個mygit文件夾沉删,就是一個工作區(qū)(working Directory)

#工作區(qū)里有一個.git隱藏文件夾渐尿,就是git的本地倉庫
.git文件夾里有一個index文件,就是git的暫存區(qū)丑念,也叫做stage
.git文件夾里的HEAD文件就是git的一個指針
請記住涡戳,在工作文件夾的每一個文件,只有兩種狀態(tài)脯倚,一個是未跟蹤,一個是已跟蹤

已跟蹤:的指的是已經(jīng)被納入git版本管理的文件嵌屎,在git快照中有他的記錄
未跟蹤:的是這個文件既不在git快照中推正,也不在暫存區(qū)

git init初始化時的工作文件夾,都屬于已跟蹤了宝惰,后續(xù)的編輯操作都會標記為植榕,已修改文件,因此需要將修改后的文件尼夺,加入暫存區(qū)尊残,然后提交暫存區(qū)的文件。

git add 將 未跟蹤 的文件添加到 暫存區(qū)域
            未修改    
            已修改
git status 
此命令查看git工作目錄的文件淤堵,處于生命周期的哪一個狀態(tài) 注意寝衫,只能在git工作目錄中輸入這個命令,他會去找.git文件夾 
第一次輸入git status會看到此狀態(tài)拐邪,沒有任何東西需要提交

#撤銷修改記錄慰毅,只能在未提交到暫存區(qū)之前 
git status
git checkout -- my.txt  放棄工作區(qū)的修改操作
  如果你修改了文件,還添加到了暫存區(qū) git add扎阶,那么只能撤銷暫存區(qū)的操作汹胃,再撤銷修改記錄

git status    
git reset HEAD readme.txt  撤銷暫存區(qū)的修改婶芭,unstage操作
git checkout -- readme.txt

#如果你直接在工作區(qū)刪除文件,動作會被git記錄
rm -rf my.txt    刪除了工作區(qū)的文件着饥,git倉庫還有記錄
git status    查看狀態(tài)犀农,可以檢測到my.txt被刪除

如果確認文件無用,可以commit到git倉庫
git rm "my.txt"
git commit -m "remove my.txt"

rm -rf my.txt
git checkout -- my.txt

# 2\. git add
復制一個文件到項目目錄下宰掉,然后執(zhí)行 `git add .`
將“修改”從當前工作區(qū)存放到暫存區(qū)
# 3\. git commit -m "first commit"
執(zhí)行 `git commit -m "注釋描述"` 將暫存區(qū)中存放的文件提交到git倉庫
# 4\. 在遠端新建一個git代碼庫:[https://github.com/JoeHR/electronApp.git](https://github.com/JoeHR/electronApp.git)
# 5\. git remote add origin
執(zhí)行 命令 `git remote add origin https://github.com/JoeHR/electronApp.git` 將本地代碼庫的當前分支與遠程的代碼庫相關聯(lián)
# 6\. git push -u origin master
將本地代碼庫的當前分支推送到遠程的代碼庫

另:命令補充呵哨!
查看git倉庫的遠程代碼庫的地址:git remote -v
 
#練習
git add main.py  開始跟蹤main.py文件
git status   此時再看已經(jīng)被跟蹤,現(xiàn)在已是可以被提交的狀態(tài),此時處于暫存區(qū)
git commit -m "first main.py"  告訴git贵扰,把暫存區(qū)的main.py提交到本地倉庫
git log     查看剛才的commit記錄


#git diff
我們將修改后的文件加入暫存區(qū)后仇穗,再執(zhí)行 " git diff " 指令發(fā)現(xiàn)沒有差異信息輸出。這是因為直接使用 " git diff " 查看的是工作區(qū)和暫存區(qū)的差異戚绕。
git diff : 對比工作區(qū)(未 git add)和暫存區(qū)(git add 之后)
git diff --cached: 對比暫存區(qū)(git add 之后)和版本庫(git commit 之后)
git diff HEAD: 對比工作區(qū)(未 git add)和版本庫(git commit 之后)

有如下幾種處理方式:
1. add并且commit纹坐,再checkout,提交到當前分支
2. add但不commit舞丛,可以stash耘子,然后checkout回來之后stash apply,在commit球切,提交到當前分支
3. add但不commit谷誓,也不stash,直接checkout吨凑,然后再commit的話捍歪,記錄就在切換分支下面。

其背后的原因:一個本地的git repo只有一個工作區(qū)和暫存區(qū)鸵钝,但是有多個分支的提交區(qū)糙臼,而我們的checkout只是將HEAD指針從一個分支切換到另一個分支。



# 重命名 mv main.py  mymain.py
提示:直接mv的操作恩商,會被git記錄為兩個形容变逃,一、刪除原有文件怠堪、二揽乱、新建了mymain.py文件
此時新文件還未被跟蹤,需要git add , git commit

改名最正確的姿勢
git mv main.py mymain.py  
git commit -m "mv mymain.py"

當你的代碼寫好了一部分功能粟矿,就可以保存一個"存檔"凰棉,這個存檔操作就是git commit,如果代碼出錯嚷炉,可以隨時回到"存檔"記錄

查看"存檔"記錄渊啰,查看commit提交記錄的命令
 git log
 git log --graph --all
git log --oneline    一行顯示git記錄
git log --oneline  --all  一行顯示所有分支git記錄
git log --oneline --all -4 --graph 顯示所有分支的版本演進的最近4條
git log -4  顯示最近4條記錄
git log --all     顯示所有分支的commit信息

#分支查看,切換分支
git branch -v 查看分支信息
git help --web log 以web界面顯示log的參數(shù)
git checkout <branch_name> #切換到指定分支
git checkout -b <branch_name> #創(chuàng)建并切換到指定分支
刪除分支
git branch -d <branch_name>
.#刪除一個干凈的分支(即相對當前分支而言該分支沒有新的提交記錄)
git branch -D <branch_name>
.#強制刪除一個分支,該分支有沒有合并到當前分支的提交記錄
注意:刪除分支前都需要先切換到其他分支才能進行刪除操作

 分支恢復
思路:對于已經(jīng)有提交記錄的分支刪除后绘证,實際上只是刪除指針隧膏,commit記錄還保留,如果想恢復嚷那,需要使用git reflog查找該分支指向的commitId胞枕,然后根據(jù)commitId創(chuàng)建新的分支
git branch <branch_name> <hash_val> #根據(jù)指定commit創(chuàng)建新分支

分支合并 http://www.reibang.com/p/2e162b544878 
 分支暫存的機制

#版本回退
git log可以查看歷史版本記錄
git reset --hard命令可以回退版本
git reset --hard HEAD^ 回退到上個版本
HEAD表示當前版版本
HEAD^表示上個版本
HEAD^^上上個版本



git config --global user.name "xxx"
git config --global user.email "xxxx@xx"

#git diff是比較暫存區(qū)和工作區(qū)的文件
git diff
diff --git a/test.sh b/test.sh
index e69de29..a4e696a 100644
--- a/test.sh
+++ b/test.sh
@@ -0,0 +1,2 @@
+djfkdl
+sdjf

#git 回退操作的邏輯
reset revent 的邏輯是不同的
 https://segmentfault.com/a/1190000019352178 

#HEAD
 http://www.zsythink.net/archives/3412/ 
https://www.pianshen.com/article/9245192904/
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市魏宽,隨后出現(xiàn)的幾起案子腐泻,更是在濱河造成了極大的恐慌,老刑警劉巖队询,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件派桩,死亡現(xiàn)場離奇詭異,居然都是意外死亡蚌斩,警方通過查閱死者的電腦和手機铆惑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來送膳,“玉大人员魏,你說我怎么就攤上這事〉” “怎么了撕阎?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碌补。 經(jīng)常有香客問我虏束,道長,這世上最難降的妖魔是什么厦章? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任魄眉,我火速辦了婚禮,結果婚禮上闷袒,老公的妹妹穿的比我還像新娘。我一直安慰自己岩梳,他們只是感情好囊骤,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冀值,像睡著了一般也物。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上列疗,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天滑蚯,我揣著相機與錄音,去河邊找鬼。 笑死告材,一個胖子當著我的面吹牛坤次,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斥赋,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼缰猴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了疤剑?” 一聲冷哼從身側響起滑绒,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隘膘,沒想到半個月后疑故,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡弯菊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年纵势,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片误续。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡吨悍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蹋嵌,到底是詐尸還是另有隱情育瓜,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布栽烂,位于F島的核電站躏仇,受9級特大地震影響,放射性物質發(fā)生泄漏腺办。R本人自食惡果不足惜焰手,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怀喉。 院中可真熱鬧书妻,春花似錦、人聲如沸躬拢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聊闯。三九已至工猜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菱蔬,已是汗流浹背篷帅。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工史侣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像丑孩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子李皇,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345