Git常用指令及流程詳解

Git基本概念了解

為了方便以及我們之后正確的了解Git的各個(gè)指令的操作含義,我們需要了解幾個(gè)概念

Git和SVN的差異,以及Git的優(yōu)勢(shì).
  • SVN 是集中式管理, 所以如果最為公共倉(cāng)庫(kù)的的中央服務(wù)器出問(wèn)題, 所有的工作者都將受到影響.
    SVN無(wú)法做到本地分支處理, 所以當(dāng)你去實(shí)現(xiàn)一個(gè)需要長(zhǎng)時(shí)間的,創(chuàng)新性的,需要不斷探索的功能的時(shí)候,就有可能陷入兩難的局面: 1.如果提交代碼可能會(huì)影響到項(xiàng)目的其他模塊以及他人工作. 2. 不提交代碼就無(wú)法很好的保護(hù)代碼版本, 當(dāng)你自己想要回到某個(gè)代碼片段的時(shí)候就無(wú)法做到.
  • Git 是分布式管理, 作為客戶端不止是提取了公共倉(cāng)庫(kù)的文件快照, 而是把代碼完整的鏡像下來(lái), 所以.如果協(xié)同工作的服務(wù)器出現(xiàn)了什么故障, 也可以時(shí)候通過(guò)本地鏡像文件去很好的恢復(fù).
    另外因?yàn)镚it是提供本地的倉(cāng)庫(kù)管理系統(tǒng), 所以對(duì)于網(wǎng)絡(luò)的依賴度并不高. 就算沒(méi)有網(wǎng)也依然可以繼續(xù)工作.等到有網(wǎng)絡(luò)的時(shí)候再推送到公共服務(wù)器即可.

Git的文件狀態(tài) (Git可以整體把文件分為已跟蹤,和未開(kāi)始跟蹤的兩種狀態(tài))
  • 已修改(modifired): 表示修改了文件, 但是還沒(méi)有保存到本地?cái)?shù)據(jù)庫(kù)中.(即文件的修改部分是Git的未跟蹤狀態(tài))
  • 已暫存(staged) : 表示對(duì)一個(gè)已修改文件的當(dāng)前版本做了標(biāo)記, 使之包含在下次可以提交的內(nèi)容中去
  • 已提交(commit) : 表示數(shù)據(jù)已經(jīng)安全的保存在了本地?cái)?shù)據(jù)庫(kù)中.

基本的Git 工作流程
  1. 在工作目錄中修改文件
  2. 暫存文件, 將文件的快照放入暫存區(qū)域
  3. 提交更新, 找到暫存區(qū)域的文件,將快照永久性存儲(chǔ)到Git倉(cāng)庫(kù)目錄

因?yàn)楝F(xiàn)在我們?cè)谑褂肎it的時(shí)候一般都是會(huì)關(guān)聯(lián)一個(gè)遠(yuǎn)程倉(cāng)庫(kù)的, 所以在鏈接遠(yuǎn)程倉(cāng)庫(kù)的前提下,如果你想將本地的代碼提交到遠(yuǎn)程公共倉(cāng)庫(kù), 即在這三步之后先更新代碼,然后將代碼推送到遠(yuǎn)程倉(cāng)庫(kù)即可.

這里也要給一個(gè)小的提示,我們?cè)谂渲肎it倉(cāng)庫(kù)的時(shí)候 一定要配置忽略文件. 因?yàn)槠渌恼聦懙亩纪Σ诲e(cuò)的, 所以這篇文章就不在做多余的贅述 , 下面給出幾個(gè)忽略文件配置的參考文章 Git忽略文件的具體配置, Git忽略文件配置


常規(guī)流程中的具體指令

  • git help
    查看git指令幫助說(shuō)明文檔, 后續(xù)可以跟具體的指令來(lái)查看指定的幫助.

  • git status
    查看文件狀態(tài), 可以看到你的哪些文件做了更改以及新增了哪些文件, 是否已經(jīng)提交到了本地倉(cāng)庫(kù),以及是否有需要上傳到遠(yuǎn)程的文件.
    建議經(jīng)常使用.你可以在你提交文件之前先查看一下你的文件狀態(tài), 查看有哪些文件沒(méi)有提交, 以及提交之后時(shí)候有沖突之類.

    • git status 文件名
      查看指定文件的狀態(tài)

    • 下面舉例一下各種狀態(tài)下status 的輸出情況:(下面舉例中的XXXX都用來(lái)表示為項(xiàng)目中的文件)
      如下的情況說(shuō)明你的Git文件當(dāng)前狀態(tài)是十分干凈的,沒(méi)有什么文件改動(dòng), 也沒(méi)有什么未跟蹤的文件.并標(biāo)示出來(lái)當(dāng)前所處分支

$ git status
On branch master
nothing to commit, working directory clean

而如果出現(xiàn)如下情況, 即有Untracked files:, 并且其下面有內(nèi)容, 則表示有新文件沒(méi)有被跟蹤到, 需要先加入到暫存當(dāng)中,才能在下次提交中提交該文件

$ echo 'My Project' > README
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    XXXX

nothing added to commit but untracked files present (use "git add" to track)

或者說(shuō)是修改了一個(gè)已經(jīng)被跟蹤的文件,則他的再次更改的部分就可以理解成為是沒(méi)有被標(biāo)記跟蹤的狀態(tài), status會(huì)有以下大概輸出格式 Changes not staged for commit:

$ git status
On branch master

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   XXXX

當(dāng)已經(jīng)有文件已經(jīng)添加入暫存區(qū), 但是還未提交時(shí), status會(huì)做如下顯示, 即Changes to be committed:會(huì)顯示,并在下方會(huì)有內(nèi)容

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   XXX
     modified:   XXXX

其實(shí)你會(huì)發(fā)現(xiàn)以上的status輸出中, Git都是會(huì)給出我們操作提示的, 比如在第一種情況下,有文件添加的時(shí)候, Git會(huì)在下方提示(use "git add <file>..." to include in what will be committed) . 就是來(lái)提示你可以使用 git add xxxx的指令來(lái)進(jìn)行操作

  • git status -s 或者 git status -- short
    如果你覺(jué)得上面status 的輸出格式不夠簡(jiǎn)潔,太過(guò)繁雜的話, 可以使用這個(gè)指令.轉(zhuǎn)換為一種緊湊型的status格式輸出. 用一下舉例
$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

其中 :
??表示了這個(gè)文件尚未被標(biāo)記跟蹤,
A表示新添加到暫存區(qū)的文件
M表示修改的文件.
如果你仔細(xì)觀察就會(huì)發(fā)現(xiàn)M出現(xiàn)的位置是會(huì)有差異的, 當(dāng)M出現(xiàn)在靠右的位置的時(shí)候,代表了這個(gè)這個(gè)文件的修改部分還沒(méi)有加入到暫存區(qū), (即下次的提交是無(wú)法提交這個(gè)文件的修改部分, 如果提交就需要先放入暫存區(qū)). 而靠左邊的M則表示了文件的修改部分已經(jīng)放入到了修改區(qū)域.
而像上圖示例中的Rakefile文件. 左右兩個(gè)位置都標(biāo)識(shí)出來(lái)了M, 則表示之前add到暫存區(qū)了一份修改之后, 本地又再次做了一些修改, 所以一部分修改在暫存區(qū)沒(méi)有提交, 還有一部分修改尚未添加到暫存區(qū). 這里我們就要注意到, 我們實(shí)際上提交的文件, 是以加入到暫存區(qū)的修改文件為最后的提交文件的,而不是你最后的提交時(shí)間為止的修改文件, 所以一定要注意如果在將文件加入暫存區(qū)之后又做了修改不要忘記將其放入暫存區(qū)


獲取/創(chuàng)建項(xiàng)目
  • git init
    在當(dāng)前文件路徑下初始化一個(gè)git倉(cāng)庫(kù)

    • git init 路徑名稱
      在指定的路徑下初始化倉(cāng)庫(kù)
  • git clone 遠(yuǎn)程倉(cāng)庫(kù)地址
    建立Git本地倉(cāng)庫(kù)管理,關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù),并將內(nèi)容拉取下來(lái).
    其實(shí)這個(gè)指令是幾個(gè)指令的一個(gè)封裝來(lái)實(shí)現(xiàn)效果的, 它創(chuàng)建了一個(gè)新的目錄, 切換到新目錄.然后 git init來(lái)初始化一個(gè)空的Git倉(cāng)庫(kù),之后關(guān)聯(lián)你指定的遠(yuǎn)程倉(cāng)庫(kù) (git remote add), 再對(duì)遠(yuǎn)程倉(cāng)庫(kù) git fetch, 最后通過(guò)git checkout將遠(yuǎn)程倉(cāng)庫(kù)的最新提交檢出到本地的工作目錄
    一般情況下,如果遠(yuǎn)程倉(cāng)庫(kù)有一個(gè)已經(jīng)在制作的項(xiàng)目, 而你需要本地從零開(kāi)始跟進(jìn)這個(gè)項(xiàng)目,可以直接用這個(gè)指令將項(xiàng)目拉取下來(lái)進(jìn)行跟進(jìn).


Git倉(cāng)庫(kù)配置
  • git config
    git的配置信息. 單獨(dú)這樣配置, 作用域只是你當(dāng)前的這一個(gè)git項(xiàng)目
    • git config user.name xxx
      配置你的個(gè)人用戶名稱. 這個(gè)比較重要一點(diǎn), 用來(lái)查看說(shuō)明是誰(shuí)提交了更新.
    • git config user.email xxx
      配置你的郵箱信息.
    • git config -l 或者 git config --list
      查看你的git配置信息
    • git config --global
      配置全局的Git信息. 可以理解為將作用域擴(kuò)大到了你的整個(gè)電腦. 這樣當(dāng)你全局配置了一些通用信息之后 新的git項(xiàng)目就可以不用再次手動(dòng)配置, 建議 用戶名以及郵箱 如果沒(méi)有特殊需求可以直接這樣配置即可, 省事兒.
      用法也只是在中間加了 --global. 后面的指令使用和 之前的一樣, 比如你要設(shè)置全局的用戶名, 即git config --global user.name xxx

遠(yuǎn)程倉(cāng)庫(kù)相關(guān)
  • git remote
    通常在我們執(zhí)行對(duì)遠(yuǎn)程倉(cāng)庫(kù)的相關(guān)操作的時(shí)候, 都會(huì)以此命令作為前綴
  • git remote add [remote-name] [URL]
    給Git倉(cāng)庫(kù)新添一個(gè)遠(yuǎn)程倉(cāng)庫(kù), 你可以給同一個(gè)項(xiàng)目添加多個(gè)遠(yuǎn)程倉(cāng)庫(kù), 來(lái)處理不同的需求,和他人合作.
    • [remote-name]是你對(duì)這個(gè)遠(yuǎn)程倉(cāng)庫(kù)設(shè)置的一個(gè)簡(jiǎn)稱, 你可以在后續(xù)的操作中用這個(gè)簡(jiǎn)稱指代這個(gè)遠(yuǎn)程倉(cāng)庫(kù). 通常沒(méi)有什么特別的需求且你這個(gè)Git倉(cāng)庫(kù)只需要鏈接一個(gè)遠(yuǎn)程倉(cāng)庫(kù)的話,那么你的這個(gè)遠(yuǎn)程倉(cāng)庫(kù)可以設(shè)置為默認(rèn)名origin.
    • [URL] 即為你的遠(yuǎn)程倉(cāng)庫(kù)地址.
  • git remote -v
    查看當(dāng)前項(xiàng)目所連接的所有遠(yuǎn)程倉(cāng)庫(kù)
    如果你有多個(gè)遠(yuǎn)程倉(cāng)庫(kù), 你會(huì)受到一個(gè)類似于下方的輸出
$ git remote -v
bakkdoor  https://github.com/bakkdoor/grit (fetch)
bakkdoor  https://github.com/bakkdoor/grit (push)
cho45     https://github.com/cho45/grit (fetch)
cho45     https://github.com/cho45/grit (push)
defunkt   https://github.com/defunkt/grit (fetch)
defunkt   https://github.com/defunkt/grit (push)
  #fetch : 標(biāo)識(shí)了你的拉取地址
  #push : 標(biāo)識(shí)了你的推送數(shù)據(jù)的地址
  • git remote show [rename-name]
    查看指定的遠(yuǎn)程倉(cāng)庫(kù)的信息.
    可以看到遠(yuǎn)程倉(cāng)庫(kù)都有哪些倉(cāng)庫(kù), 這些倉(cāng)庫(kù)本地是否已經(jīng)標(biāo)記跟蹤. 從遠(yuǎn)程倉(cāng)庫(kù)的拉取的數(shù)據(jù)會(huì)和本地的哪一個(gè)分支合并數(shù)據(jù). 本地分支的數(shù)據(jù)會(huì)推送給遠(yuǎn)程倉(cāng)庫(kù)的哪一個(gè)分支等. 具體可以看到以下示例.
$ git remote show origin
* remote origin
  Fetch URL: https://github.com/schacon/ticgit
  Push  URL: https://github.com/schacon/ticgit
  HEAD branch: master
  Remote branches:
    master                               tracked
    dev-branch                           tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)
  • git remote rename [remote-old-name] [remote-new-name]
    對(duì)遠(yuǎn)程倉(cāng)庫(kù)的進(jìn)行重命名, [remote-old-name]表示的是你的遠(yuǎn)程倉(cāng)庫(kù)當(dāng)前的簡(jiǎn)稱. [remote-new-name]表示的是需要改成的名字.
  • git remote rm [remote-name]
    移除遠(yuǎn)程倉(cāng)庫(kù)的關(guān)聯(lián)

添加/修改文件/解決沖突
  • git add 文件名 或者 git add .
    add指令是一個(gè)多功能指令它可以有以下功能:
    1.給指定文件添加跟蹤放入暫存區(qū)
    2.把已經(jīng)跟蹤的文件放到暫存區(qū)
    3.把合并時(shí)有沖突的文件標(biāo)記為已解決狀態(tài)
    在Git當(dāng)中, 我們不能把add 理解成添加文件到下一次的提交, 而要把他理解成添加了內(nèi)容到下一次的提交當(dāng)中.可能當(dāng)你從SVN轉(zhuǎn)過(guò)來(lái)之后可能剛開(kāi)始會(huì)有點(diǎn)疑惑, 為什么有的文件你已經(jīng)add過(guò)了, 你依然需要使用add 指令將其加入暫存區(qū). 因?yàn)槟闶褂胊dd指令添加的是內(nèi)容, 而不是內(nèi)容,這么想的話,可能會(huì)更好理解一點(diǎn)吧.
    如果你需要add的文件很多, 或者你懶得去打文件名. 你可以使用git add.( 注意, 后面跟的是一個(gè)<space>.)
    這個(gè)指令可以自動(dòng)將所有未標(biāo)記跟蹤的內(nèi)容加入暫存區(qū).

提交文件
  • git commit 文件名 -m 提交信息/備注
    將暫緩區(qū)的文件提交到當(dāng)前的本地分支倉(cāng)庫(kù).
    注意!,一定要跟提交信息, (可以用 -m 或者 -F). , 只有寫了信息才會(huì)提交成功,如果你提交的時(shí)候沒(méi)有編寫信息會(huì)進(jìn)入vim編輯讓你編輯提交信息, 如果你對(duì)vim不熟的話還是直接 用:q退出后重新提交吧.

這邊需要注意的是 如果你使用 -m 指令后面直接跟信息的話, 如果信息是英文, 則需要用'' 將信息包裹, 否則git會(huì)不識(shí)別, 并會(huì)報(bào)一下錯(cuò)誤. 猜測(cè)在純英文狀態(tài)下無(wú)法識(shí)別為字符串吧

fatal: Paths with -a does not make sense.
  • git commit -a -m 提交信息/備注 或者 git commit --all -m 提交信息/備注
    將已經(jīng)標(biāo)記的文件修改跳過(guò)暫存區(qū), 直接提交上去 . 其實(shí)就是減少了我們的工作流程, 減少了add的這一步
    但是需要注意的是:
    這個(gè)指令是對(duì)已經(jīng)處于標(biāo)記的文件有效,(即本身文件在Git倉(cāng)庫(kù)中存在, 只是做了內(nèi)容修改的文件) 如果有新增的文件, 則不能夠直接用commit -a去省略操作了. 還是需要將新添文件加入(add .)暫緩區(qū),添加git標(biāo)記,使git能夠跟蹤才可以

查閱/對(duì)比不同

*git log
查閱log信息
需要注意的是,這樣會(huì)進(jìn)入vim格式. 查閱完畢可以使用wq退出閱覽.
大概出現(xiàn)的格式如下

// (HEAD->master)代表了我master分支上最新的本地提交.
commit 029c5159d8db32fb70d36db0df35312ee346730a (HEAD -> master)
Author: XXX <XXXX@XXX.com>
Date:   Mon Oct 15 18:27:27 2018 +0800

    項(xiàng)目信息相關(guān)

// 后邊的(origin/master)代表了我在遠(yuǎn)程倉(cāng)庫(kù)是同步到了這里
commit c3ceb15e42c9af3c8bb1134e165cec5a89f204d5 (origin/master)  
Author: XXXX <XXXXX@XXX.com>
Date:   Thu Aug 30 18:13:27 2018 +0800

    msg

commit 99615aad5faf0dd4ce989e6b86e21e81fef01013
Merge: 0f746f0 50938c4
Author: XXX <XXX@XXX.com>
Date:   Mon Aug 20 18:59:27 2018 +0800

    Merge branch 'master' of https://github.com/xxx/xxx

commit 0f746f04b01b0bc4878169ce35e0ad0938bdcfcc
Author: XXX <XXX@XXX.com>
Date:   Mon Aug 20 18:56:34 2018 +0800

在log 中我們不止能夠看到我們每次提交的消息提示, 也能看到每次提交的commitID, 用來(lái)區(qū)分每次的提交.
并且也能夠清楚我們本地文件與遠(yuǎn)程倉(cāng)庫(kù)是否同步.


推送到遠(yuǎn)程倉(cāng)庫(kù)
  • git push [remote-name] [branch-name]
    將本地文件中你所指定的分支(branch-name)內(nèi)容, 推送到指定遠(yuǎn)程倉(cāng)庫(kù)(remote-name).
    需要注意的是,如果遠(yuǎn)程倉(cāng)庫(kù)中有數(shù)據(jù)是你沒(méi)有拉取下來(lái)的,那么你需要先執(zhí)行git pull指令將數(shù)據(jù)拉取下來(lái),然后再push.否則會(huì)報(bào)錯(cuò).和SVN使用的時(shí)候需要先update 再commit同理.

    • remote-name:是你對(duì)遠(yuǎn)程倉(cāng)庫(kù)的簡(jiǎn)寫名 .如果你沒(méi)有特殊設(shè)置的話.默認(rèn)名為origin .如果你是使用了clone指令克隆的一個(gè)遠(yuǎn)程倉(cāng)庫(kù)的話,那么Git會(huì)默認(rèn)設(shè)置成origin.
    • branch-name是你的分支名稱, 如果你是在默認(rèn)分支上, 而你有沒(méi)有特別命名的話, 默認(rèn)名為master
  • git push [remote-name]
    如果你所在分支于遠(yuǎn)程倉(cāng)庫(kù)分支存在標(biāo)記跟蹤關(guān)系, 則可以省略后面的 [branch-name],git會(huì)默認(rèn)推送當(dāng)前所在分支到遠(yuǎn)程倉(cāng)庫(kù)所在分支

  • git push
    如果你所在分支僅存在一條標(biāo)記追蹤關(guān)系, 則 [remote-name]糖声、[branch-name]都可以省略. git會(huì)默認(rèn)推送當(dāng)前分支到對(duì)應(yīng)的遠(yuǎn)程倉(cāng)庫(kù)分支.

我們通常的提交操作可以使用如下流程指令:

  • git status查看狀態(tài),如果有新增文件 則執(zhí)行 git add .
  • git commit -a -m [提交信息] 提交到本地倉(cāng)庫(kù)
  • 如果需要推送到遠(yuǎn)程倉(cāng)庫(kù)則執(zhí)行 git push (在你沒(méi)有更改默認(rèn)remote-name以及分支名的情況下)
  • git status查看是否完整成功提交代碼.

寫在最后

本篇文章所總結(jié)的內(nèi)容, 均是從GitBook中學(xué)習(xí)總結(jié)的, 如果你想系統(tǒng)而仔細(xì)的去了解git的話.還是推薦你去用GitBook中看一下.
如果這篇文章真的能夠幫助到了看文章的你的話, 那將是對(duì)我來(lái)說(shuō)最好的鼓勵(lì)了, 還希望你能夠用一個(gè)小心心告訴我哦.

持續(xù)更新ing....

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泻仙,一起剝皮案震驚了整個(gè)濱河市乳讥,隨后出現(xiàn)的幾起案子女淑,更是在濱河造成了極大的恐慌牍蜂,老刑警劉巖嫩海,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件早抠,死亡現(xiàn)場(chǎng)離奇詭異递胧,居然都是意外死亡碑韵,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門缎脾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)祝闻,“玉大人,你說(shuō)我怎么就攤上這事遗菠×” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵辙纬,是天一觀的道長(zhǎng)豁遭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)贺拣,這世上最難降的妖魔是什么蓖谢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮譬涡,結(jié)果婚禮上闪幽,老公的妹妹穿的比我還像新娘。我一直安慰自己昂儒,他們只是感情好沟使,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著渊跋,像睡著了一般腊嗡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拾酝,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天燕少,我揣著相機(jī)與錄音,去河邊找鬼蒿囤。 笑死客们,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播底挫,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼恒傻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了建邓?” 一聲冷哼從身側(cè)響起盈厘,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎官边,沒(méi)想到半個(gè)月后沸手,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡注簿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年契吉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诡渴。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捐晶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妄辩,到底是詐尸還是另有隱情租悄,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布恩袱,位于F島的核電站,受9級(jí)特大地震影響胶哲,放射性物質(zhì)發(fā)生泄漏畔塔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一鸯屿、第九天 我趴在偏房一處隱蔽的房頂上張望澈吨。 院中可真熱鬧,春花似錦寄摆、人聲如沸谅辣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)桑阶。三九已至,卻和暖如春勾邦,著一層夾襖步出監(jiān)牢的瞬間蚣录,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工眷篇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萎河,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像虐杯,于是被迫代替她去往敵國(guó)和親玛歌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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

  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照擎椰,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)...
    sunnyghx閱讀 3,921評(píng)論 0 11
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理支子,服務(wù)發(fā)現(xiàn),斷路器确憨,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照译荞,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)。這樣一來(lái)休弃,任何一處協(xié)同...
    __silhouette閱讀 15,887評(píng)論 5 147
  • 手工創(chuàng)建UIWindow,可以在應(yīng)用開(kāi)發(fā)中將某些界面覆蓋到最上層 /* eg.支付寶客戶端的手勢(shì)解鎖功能\ 密碼保...
    yaoyao_IOS閱讀 674評(píng)論 0 0
  • 精 時(shí)間少吞歼?讀精華這一段就夠了! 如果我可以塔猾,你也能做到篙骡! 大腦的工作模式(清醒): 清醒時(shí)的大腦,像每天出去工作...
    牛牛的Annie閱讀 606評(píng)論 0 0