GitHub入門與實(shí)踐讀書筆記

1.1 GitHub簡介

GitHub是為開發(fā)者提供Git倉庫的托管服務(wù)。這是一個(gè)讓開發(fā)者與朋友浩淘、同事贩耐、同學(xué)以及陌生人共享代碼的完美場所。

社會(huì)化編程

GitHub曾經(jīng)的logo里面就有Social Coding這個(gè)概念本辐,任何人都可以比從前更加容易地獲得源代碼,將其自由更改并加以公開蘸拔。

在Github各個(gè)頁面按下shift + /都可以打開鍵盤快捷鍵一覽表师郑。

Explore:最尖端的技術(shù)和軟件

Gist:使用JavaScript編寫的Ace編輯器,管理和發(fā)布一些沒必要保存在倉庫中的代碼调窍,如比較小的代碼片段宝冕。

2.1 版本管理

集中型:以Subversion為代表,將所有數(shù)據(jù)存放在服務(wù)器中邓萨,有便于管理的優(yōu)點(diǎn)地梨,但是,一旦開發(fā)者所處的環(huán)境不能連接服務(wù)器缔恳,就無法獲得最新的源代碼宝剖。

分散型:以Git為代表,可以擁有多個(gè)倉庫歉甚,開發(fā)者不必連接遠(yuǎn)程倉庫就可以開發(fā)万细。

2.2 Git初始設(shè)置

設(shè)置姓名和郵箱

$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "youremail@example.com"

這個(gè)命令會(huì)在“.../User/.gitconfig”中輸出設(shè)置文件,想要更改信息時(shí)纸泄,可以直接更改設(shè)置文件赖钞。

其他初始化操作

$ git config -global core.editor <editor>  #設(shè)置默認(rèn)文本編輯器
$ git config -global merge.tool <tool>  #設(shè)置解決合并沖突時(shí)差異分析工具
$ git config --list  #檢查已有的配置信息

創(chuàng)建新版本庫

$ git clone <url>  #克隆遠(yuǎn)程版本庫
$ git init  #初始化本地版本庫

提高命令輸出的可讀性

$ git config --global color.ui auto

3.1 GitHub的前期準(zhǔn)備

  • 創(chuàng)建賬戶
  • 設(shè)置頭像(通過Gravatar服務(wù)器顯示)
  • 設(shè)置SSH Key

https 和 SSH 的區(qū)別

  1. 前者可以隨意克隆github上的項(xiàng)目,而不管是誰的聘裁;而后者則是你必須是你要克隆的項(xiàng)目的擁有者或管理員雪营,且需要先添加 SSH key ,否則無法克隆衡便。
  2. https url 在push的時(shí)候是需要驗(yàn)證用戶名和密碼的献起;而 SSH 在push的時(shí)候洋访,是不需要輸入用戶名的,如果配置SSH key的時(shí)候設(shè)置了密碼谴餐,則需要輸入密碼的姻政,否則直接是不需要輸入密碼的。

在 github 上添加 SSH key 的步驟

  • 檢查你電腦是否已經(jīng)有 SSH key 总寒,運(yùn)行 git Bash 客戶端扶歪,輸入如下代碼:
$ cd ~/.ssh
$ ls

這兩個(gè)命令就是檢查是否已經(jīng)存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已經(jīng)存在摄闸,那么你可以跳過步驟2善镰,直接進(jìn)入步驟3。

  • 創(chuàng)建一個(gè) SSH key
$ ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]
Enter passphrase (empty for no passphrase): 
# Enter same passphrase again:

如果結(jié)果為

Your identification has been saved in /c/Users/you/.ssh/id_rsa.
# Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com

SSH key 已經(jīng)創(chuàng)建成功年枕,你只需要添加到github的SSH key上就可以炫欺。

  • SSH key 到 github上面去
  1. 需要拷貝 id_rsa.pub 文件的內(nèi)容,你可以用編輯器打開文件復(fù)制熏兄。
  2. 登錄你的github品洛,從又上角的設(shè)置進(jìn)入,然后點(diǎn)擊菜單欄的 SSH key 進(jìn)入頁面添加 SSH key摩桶。
  3. 點(diǎn)擊 Add SSH key 按鈕添加一個(gè) SSH key 桥状。把你復(fù)制的 SSH key 代碼粘貼到 key 所對(duì)應(yīng)的輸入框中,記得 SSH key 代碼的前后不要留有空格或者回車硝清。
  • 測試SSH Key

在Git Bash中輸入

$ ssh -T git@github.com

或者

$ ssh -T -p 443 git@ssh.github.com

有一段警告

The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?

輸入 yes 回車辅斟,如果創(chuàng)建 SSH key 的時(shí)候設(shè)置了密碼,接下來就會(huì)提示你輸入密碼芦拿,如:

Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':

當(dāng)然如果你密碼輸錯(cuò)了士飒,會(huì)再要求你輸入,直到對(duì)了為止蔗崎。

注意:輸入密碼時(shí)如果輸錯(cuò)一個(gè)字就會(huì)不正確酵幕,使用刪除鍵是無法更正的。

密碼正確后你會(huì)看到下面這段話缓苛,如:

Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.

查看分支間的差別

4.1 Git基本操作

git init--初始化倉庫

用 git init 在目錄中創(chuàng)建新的 Git 倉庫芳撒。 你可以在任何時(shí)候、任何目錄中這么做未桥,完全是本地化的番官。
在目錄中執(zhí)行 git init,就可以創(chuàng)建一個(gè) Git 倉庫了钢属。比如我們創(chuàng)建 runoob 項(xiàng)目:

$ mkdir runoob
$ cd runoob
$ git init
Initialized empty Git repository in /Users/tianqixin/www/runoob/.git/
# 在 /runoob/.git/ 目錄初始化空 Git 倉庫完畢。

在Git中我們稱這個(gè)目錄的內(nèi)容為“附屬于該倉庫的工作樹”门躯,文件的編輯等操作在工作樹中進(jìn)行淆党,然后記錄到倉庫中,以此管理文件的歷史快照。如果需要恢復(fù)之前的狀態(tài)染乌,可以從倉庫調(diào)取之前的快照山孔。

git status--查看倉庫狀態(tài)

git status -s以獲得簡短的結(jié)果輸出。

git add --向暫存區(qū)添加文件

git add . 命令來添加當(dāng)前項(xiàng)目的所有文件

git commit 保存?zhèn)}庫的歷史記錄

$ git commit -m "First commit"
# -m 參數(shù)后面的"First commit稱作提交信息
$ git commiy -am "Add something"
# 包含了git add 和 git commit

如果想要記錄更加詳細(xì)的信息荷憋,直接執(zhí)行“git commit”命令即可台颠,編輯器記錄提交信息的格式為:

  • 第一行:用一行文字簡述提交的更改內(nèi)容
  • 第二行:空行
  • 第三行:級(jí)數(shù)更改原因和詳細(xì)內(nèi)容

退出和保存操作參照Vim編輯器基本操作

git commit -a跳過git add 提交緩存的流程

git log--查看提交日志

$ git log --pretty=short
# 只讓程序顯示第一行簡述信息
$ git log README.md
# 只顯示指定文件的信息
$ git log -p
# 查看提交帶來的改動(dòng)
$ git log -p README.md

git diff--查看當(dāng)前工作樹和暫存區(qū)的區(qū)別

$ git diff HEAD
# 查看工作樹與最新提交的區(qū)別,可以在git commit之前用

尚未緩存的改動(dòng):git diff
查看已緩存的改動(dòng): git diff --cached
查看已緩存的與未緩存的所有改動(dòng):git diff HEAD
顯示摘要而非整個(gè) diff:git diff --stat

4.2 推送遠(yuǎn)程倉庫

需要在GitHub上建立與本地倉庫一致的遠(yuǎn)程倉庫勒庄,創(chuàng)建時(shí)不要生成README.md文件串前。

git remote add--添加遠(yuǎn)程倉庫

$ git remote add origin git@github.com:WangYixin-Tom/Modern-Signal-Processing.git

這項(xiàng)指令可以直接從GitHub上拷貝。

git push--推送至遠(yuǎn)程倉庫

$ git push -u origin master

本地倉庫的master分支將會(huì)被推送到遠(yuǎn)程倉庫中实蔽。

遠(yuǎn)程倉庫也可以創(chuàng)建其他分支荡碾。例如分支feature-D,將它以同名形式push至遠(yuǎn)程倉庫局装。

$ git checkout -b feature-D     #本地倉庫建立分支
$ git push -u origin feature-D  #推送至遠(yuǎn)程倉庫

如果提示: error setting certificate verify locations坛吁,需要重新定位整證書的位置,并再次推送铐尚。

git config --system http.sslcainfo "D:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"

4.3 從遠(yuǎn)程倉庫獲取

$ git clone git@github.com:github-book/git-tutorrial.git    #注意不要與之前的倉庫在同一個(gè)目錄下
$ git branch -a     #查看分支信息
$ git checkout -b feature-D origin/feature-D        #將遠(yuǎn)程倉庫中分支獲取至本地倉庫
$ git diff  #修改之后拨脉,查看修改
$ git commit -am "Add feature-D"
$ git push

如果需要獲得最新的遠(yuǎn)程倉庫分支

$ git pull origin feature-D

如果兩人同時(shí)修改了同一部分的源代碼,push時(shí)就很容易發(fā)生沖突宣增。所以多名開發(fā)者在同一個(gè)分支作業(yè)時(shí)玫膀,建議頻繁進(jìn)行push和pull操作。

4.4 分支

不同的分支中统舀,可以同時(shí)進(jìn)行完全不同的作業(yè)匆骗,等該分支的作業(yè)完成之后再與master分支合并,可以實(shí)現(xiàn)多人高效地并行開發(fā)誉简。

  • git branch :顯示所有分支

  • git checkout -b feature-A :創(chuàng)建名為feature-A的分支

  • git branch feature-A

    git checkout feature-A:和上面指令相同效果

  • git checkout -:切換至上一分支

  • git merge --no-ff feature-A:合并分支

  • git log--graph:以圖表查看分支

4.5 更改操作

  • git reset --hard 目標(biāo)時(shí)間點(diǎn)哈希值:回溯到指定時(shí)間點(diǎn)碉就,哈希值只要輸入4位以上就可以執(zhí)行。
  • git reset HEAD:用于取消已緩存的內(nèi)容闷串。
  • git reflog:查看當(dāng)前倉庫執(zhí)行過的操作日記

merge分支的時(shí)候瓮钥,可能會(huì)有沖突,這個(gè)時(shí)候需要手動(dòng)查看沖突部分烹吵,在編輯器中修改成我們希望得到的樣子碉熄。然后重新執(zhí)行add和commit 命令。

  • git commit amend:修改提交信息

在合并特性分支之前肋拔,如果發(fā)現(xiàn)已經(jīng)提交的內(nèi)容中有拼寫錯(cuò)誤等锈津,可以提交一個(gè)修改,將修改壓縮到一個(gè)歷史記錄中凉蜂。

  • git rebase -i HEAD~2

5.1 Pull Request

定義:自己修改源代碼之后琼梆,請求對(duì)方倉庫采納該修改時(shí)采取的一種行為性誉。在網(wǎng)絡(luò)上也常常被簡稱為PR。

Pull Request一般流程

  1. Fork源代碼管理者的遠(yuǎn)程倉庫茎杂,建立自己的遠(yuǎn)程倉庫
  2. pull需要修改的特性分支到自己本地倉庫
  3. 新建需要修改的特性分支错览,并做相應(yīng)修改
  4. push到自己的遠(yuǎn)程倉庫
  5. 發(fā)送PullRequest

clone

$ git clone git@github.com:hirocastest/first-pr.git
$ cd first-pr

branch

$ git branch -a #查看clone出的倉庫分支
$ git checkout -b work gh-pages #創(chuàng)建work分支并自動(dòng)切換
$ git branch -a #確認(rèn)切換work分支
$ ls    #查看文件列表,并對(duì)相應(yīng)文件做修改

提交修改

$ git diff  #查看修改是否正確進(jìn)行
$ git add index.html 
$ git commit -m "Add my impression"
$ git push origin work #創(chuàng)建遠(yuǎn)程分支
$ git branch -a #查看遠(yuǎn)程分支

為了防止開發(fā)到一半的Pull Request被誤合并煌往,可以在標(biāo)題前面加上[WIP]表示W(wǎng)ork In Process倾哺。完成之后再去掉這個(gè)標(biāo)記。

如果用戶對(duì)該倉庫擁有編輯權(quán)限刽脖,則可以直接創(chuàng)建分支羞海,從分支發(fā)送Pull Request≡兀可以免去Fork的麻煩扣猫。

6.1 倉庫的維護(hù)

可以將原倉庫設(shè)置為遠(yuǎn)程倉庫,從該倉庫fetch數(shù)據(jù)并與本地倉庫進(jìn)行合并翘地,讓本地倉庫保持最新的狀態(tài)申尤。

  • Fork與clone
$ git clone git@github.com:hirocastest/Spoon-Knife.git
$ cd Spoon-Knife
  • 原倉庫設(shè)置名稱
$ git remote add upstream git://github.com/octocat/Spoon-knife.git #upstream作為原倉庫的表示符
  • 獲取最新數(shù)據(jù)
$ git fetch upstream        #獲取最新源代碼
$ git merge upstream/master #合并

以后只要重復(fù)這一步驟即可。

6.2 Pull Request的接收

首先可以通過代碼審查衙耕,進(jìn)行評(píng)論和比較昧穿。

其次,可以在本地開發(fā)環(huán)境中反映Pull Request的內(nèi)容變化

  • 將接收方的本地倉庫更新至最新狀態(tài)
$ git clone git@github.com:ituring/first-pr.git
$ cd first-pr
  • 獲取發(fā)送方的遠(yuǎn)程倉庫
$ git remote add PR發(fā)送者 git@github.com:PR發(fā)送者/first-pr.git
$ git fetch PR發(fā)送者
  • 創(chuàng)建用于檢查的分支
$ git checkout -b pr1
  • 合并
$ git merge PR發(fā)送者/work

實(shí)際開發(fā)之中需要檢查軟件是否能正常運(yùn)行

  • 刪除分支
$ git branch -D pr1

刪除沒有用的pr1分支

GitHub上點(diǎn)擊Merge Pull Request自動(dòng)合并至倉庫或者利用CLI進(jìn)行合并操作再push至GitHub

  • 合并到主分支
$ git checkout gh-pages     # 切換至 gh-pages 分支
$ git merge PR發(fā)送者/work  #合并分支
$ git diff origin/gh-pages #查看兩者區(qū)別橙喘,確認(rèn)
# git push

用這種方法處理之后倉庫的PR自動(dòng)從open狀態(tài)切換到close狀態(tài)时鸵。

7.1 GitHub Flow的流程

  • 令master分支時(shí)常保持可以部署的狀態(tài)
  • 可以進(jìn)行新的作業(yè)時(shí)要從master分支創(chuàng)建新分支,新分支名稱要具有描述性
  • 在新建的本地倉庫分支中進(jìn)行提交
  • 在GitHub端倉庫創(chuàng)建同名分支厅瞎,定期push
  • 需要幫助或者反饋時(shí)饰潜,發(fā)送Pull Request
  • 讓其他開發(fā)者進(jìn)行審查,確認(rèn)作業(yè)后與master分支合并

查看GitHub的分支列表頁面(https://github.com/用戶名/倉庫名/branches)還可以輕松掌握各分支與master分支的差別和簸。

附錄

Vim 編輯器基本操作

按下Esc; 進(jìn)入命令模式彭雾,然后輸入

  • :q 離開 (short for :quit)
  • :q! 離開,不保存(short for :quit!)
  • :wq 保存并離開
  • :wq! 保存并離開锁保,即使只有讀取的權(quán)限薯酝。
  • :x 保存并離開(shorter than :wq)
  • :qa 離開全部 (short for :quitall)

或者可以按下(Esc Shift+Z Shift+Z)以寫入/保存,同時(shí)離開爽柒。

Vim有幫助吴菠,只需要按下,輸入浩村,

Vim has extensive help, so type Esc:helpReturn and you will have all your answers and even a neat tutorial.

Git資料

Git托管的軟件

  • GitBucket
  • GitLab
  • Gitorious
  • RhodeCode

Git常用命令

master : 默認(rèn)開發(fā)分支做葵; origin : 默認(rèn)遠(yuǎn)程版本庫

初始化操作

$ git config -global user.name <name>  #設(shè)置提交者名字
$ git config -global user.email <email>  #設(shè)置提交者郵箱
$ git config -global core.editor <editor>  #設(shè)置默認(rèn)文本編輯器
$ git config -global merge.tool <tool>  #設(shè)置解決合并沖突時(shí)差異分析工具
$ git config -list  #檢查已有的配置信息

創(chuàng)建新版本庫

$ git clone <url>  #克隆遠(yuǎn)程版本庫
$ git init  #初始化本地版本庫

修改和提交

$ git add .  #添加所有改動(dòng)過的文件
$ git add <file>  #添加指定的文件
$ git mv <old> <new> #文件重命名
$ git rm <file>  #從緩存區(qū)和硬盤中刪除文件
$ git rm -cached <file>  #緩存區(qū)刪除但硬盤不刪除
$ git commit -m <file> #提交指定文件
$ git commit -m “commit message”  #提交所有更新過的文件
$ git commit -amend  #修改最后一次提交
$ git commit -C HEAD -a -amend  #增補(bǔ)提交(不會(huì)產(chǎn)生新的提交歷史紀(jì)錄)

查看提交歷史

$ git log  #查看提交歷史
$ git log -p <file>  #查看指定文件的提交歷史
$ git blame <file>  #以列表方式查看指定文件的提交歷史
$ gitk  #查看當(dāng)前分支歷史紀(jì)錄
$ gitk <branch> #查看某分支歷史紀(jì)錄
$ gitk --all  #查看所有分支歷史紀(jì)錄
$ git branch -v  #每個(gè)分支最后的提交
$ git status  #查看當(dāng)前狀態(tài)
$ git diff  #查看變更內(nèi)容

撤消操作

$ git reset -hard HEAD  #撤消工作目錄中所有未提交文件的修改內(nèi)容
$ git checkout HEAD <file1> <file2>  #撤消指定的未提交文件的修改內(nèi)容
$ git checkout HEAD. #撤消所有文件
$ git revert <commit>  #撤消指定的提交

分支與標(biāo)簽

$ git branch  #顯示所有本地分支
$ git checkout <branch/tagname>  #切換到指定分支或標(biāo)簽
$ git branch <new-branch>  #創(chuàng)建新分支
$ git branch -d <branch>  #刪除本地分支
$ git tag  #列出所有本地標(biāo)簽
$ git tag <tagname>  #基于最新提交創(chuàng)建標(biāo)簽
$ git tag -d <tagname>  #刪除標(biāo)簽

合并與衍合

$ git merge <branch>  #合并指定分支到當(dāng)前分支
$ git rebase <branch>  #衍合指定分支到當(dāng)前分支

遠(yuǎn)程操作

$ git remote -v  #查看遠(yuǎn)程版本庫信息
$ git remote show <remote>  #查看指定遠(yuǎn)程版本庫信息
$ git remote add <remote> <url>  #添加遠(yuǎn)程版本庫
$ git fetch <remote>  #從遠(yuǎn)程庫獲取代碼
$ git pull <remote> <branch>  #下載代碼及快速合并
$ git push <remote> <branch>  #上傳代碼及快速合并
$ git push <remote> : <branch>/<tagname>  #刪除遠(yuǎn)程分支或標(biāo)簽
$ git push -tags  #上傳所有標(biāo)簽
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市心墅,隨后出現(xiàn)的幾起案子蜂挪,更是在濱河造成了極大的恐慌重挑,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棠涮,死亡現(xiàn)場離奇詭異,居然都是意外死亡刺覆,警方通過查閱死者的電腦和手機(jī)严肪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谦屑,“玉大人驳糯,你說我怎么就攤上這事∏獬龋” “怎么了酝枢?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長悍手。 經(jīng)常有香客問我帘睦,道長,這世上最難降的妖魔是什么坦康? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任竣付,我火速辦了婚禮,結(jié)果婚禮上滞欠,老公的妹妹穿的比我還像新娘古胆。我一直安慰自己,他們只是感情好筛璧,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布逸绎。 她就那樣靜靜地躺著,像睡著了一般夭谤。 火紅的嫁衣襯著肌膚如雪棺牧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天沮翔,我揣著相機(jī)與錄音陨帆,去河邊找鬼。 笑死采蚀,一個(gè)胖子當(dāng)著我的面吹牛疲牵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播榆鼠,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼纲爸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了妆够?” 一聲冷哼從身側(cè)響起识啦,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤负蚊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后颓哮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體家妆,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年冕茅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伤极。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡姨伤,死狀恐怖哨坪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乍楚,我是刑警寧澤当编,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站徒溪,受9級(jí)特大地震影響忿偷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜词渤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一牵舱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缺虐,春花似錦芜壁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至剪芍,卻和暖如春塞淹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背罪裹。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工饱普, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人状共。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓套耕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親峡继。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冯袍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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