Git基礎(chǔ)教程(入門教程)

1. 前言

本文是 Git 入門級教程浮还,針對的是那些不會使用git的人群;通過該教程,能讓你循序漸進(jìn)地掌握 Git 的基本概念、基本操作流程 和 常用命令场钉;

如果你已經(jīng)會了 Git 的基本操作吝羞,希望在使用git時作為手冊去查詢链沼,那你可以查看我的另一篇文章Git命令大全

如果你在使用Git中遇到了難題麦射,你可以參考 Git技巧和問題解決方案

2. 為什么使用Git

詳情請參考選擇Git的理由

3. 為什么使用命令行

Git 有2種使用方式:

  • 命令行方式蛾娶;
  • 可視化界面的 GUI 方式;

本文中潜秋,將使用命令行方式蛔琅,理由如下:

  • 命令行模式能夠進(jìn)行Git的所有操作;而 GUI 方式只能進(jìn)行較常用的Git操作峻呛;如果你會命令行的方式罗售,那 GUI 的方式也就會了,反之钩述,則不成立莽囤;
  • GUI 方式的 Git 軟件太多,不同的人喜歡的可能不一樣切距,也不一定都裝了 GUI 的Git朽缎,但每個人基本上都會有命令行工具,如:Mac 系統(tǒng)里有 Terminal(終端),Windows 系統(tǒng)有 CMD话肖、PowerShell 等等北秽;

4. 安裝

安裝 Git 命令行工具:

  • Windows系統(tǒng):從 https://git-scm.com/downloads 下載并安裝 Git命令行工具
  • MacOS系統(tǒng):
    • 方式1:

      1. 打開終端;(如果找不到終端軟件最筒,可點擊 屏幕右上角的放大鏡贺氓,然后輸入“終端”來查找并打開終端軟件)
      2. 執(zhí)行命令:xcode-select --install ;按照提示操作安裝 xcode 命令行工具床蜘,如果讓輸入密碼辙培,就輸入 電腦的開機(jī)密碼;
    • 方式2:如果你的電腦上已經(jīng)安裝了 brew命令(Homebrew)邢锯,你也可以用 brew 安裝扬蕊;安裝方式如下,在終端中執(zhí)行如下命令:

      brew install git
      

5. 配置

安裝Git后丹擎,使用Git之前尾抑,需要先對Git做一些常用的信息的配置;

配置工作只需一次蒂培,以后升級時還會沿用現(xiàn)在的配置再愈。當(dāng)然,如果需要护戳,你隨時可以用相同的方式修改已有的配置翎冲。

5.1. 用戶信息

第一個要配置的是你個人的用戶名稱和電子郵件地址。這兩條配置很重要媳荒,每次 Git 提交時都會攜帶這兩條信息府适,用于說明是誰提交了代碼:

git config --global user.name "郭斌勇"
git config --global user.email guobinyong@qq.com

5.2. 文本編輯器

接下來要設(shè)置的是默認(rèn)使用的文本編輯器。Git 需要你輸入一些額外消息的時候肺樟,會自動調(diào)用一個外部文本編輯器給你用檐春。默認(rèn)會使用操作系統(tǒng)指定的默認(rèn)編輯器,一般可能會是 Vi 或者 Vim么伯。如果你有其他偏好疟暖,比如 Emacs 的話,可以重新設(shè)置:

git config --global core.editor emacs

5.3. 差異分析工具

還有一個比較常用的是田柔,在解決合并沖突時使用哪種對比工具俐巴。
比如要改用 vimdiff 的話:

git config --global merge.tool vimdiff

Git 可以理解 kdiff3,tkdiff硬爆,meld欣舵,xxdiff,emerge缀磕,vimdiff缘圈,gvimdiff劣光,ecmerge,和 opendiff 等合并工具的輸出信息糟把。當(dāng)然绢涡,你也可以指定使用自己開發(fā)的工具;

5.4. 查看配置信息

要檢查已有的配置信息遣疯,可以使用如下命令:

git config --list

有時候會看到重復(fù)的變量名雄可,那就說明它們來自不同的配置文件(比如 /etc/gitconfig~/.gitconfig),不過最終 Git 實際采用的是最后一個

也可以直接查閱某個環(huán)境變量的設(shè)定缠犀,只要把特定的名字跟在后面即可数苫,像這樣:

git config user.name

6. 基本操作

6.1. 獲得Git倉庫

有兩種獲得Git倉庫的方法:

  1. 在現(xiàn)存的目錄下創(chuàng)建新的Git倉庫。
  2. 從已有的Git倉庫克隆新的鏡像倉庫辨液。

6.1.1. 在現(xiàn)存的目錄下創(chuàng)建新的Git倉庫

要對現(xiàn)有的某個項目開始用 Git 管理虐急,只需到此項目的根目錄,執(zhí)行如下命令來創(chuàng)建并初始化Git倉庫:

git init

初始化后室梅,在當(dāng)前目錄下會出現(xiàn)一個名為 .git 的目錄,Git 倉庫的所有信息都包含在該目錄中疚宇。

6.1.2. 從已有的倉庫克隆

如果Git倉庫已經(jīng)存了亡鼠,那我們可以通過如下命令將該倉庫克隆到本機(jī)上:
命令格式:

git clone [url]

示例:

git clone https://gitee.com/guobinyong/GitTest.git

注意:如果克隆的是私有倉庫,可能會彈出對話框讓輸入的用戶名和密碼敷待,輸入被克隆的倉庫的用戶名和密碼即可

這會在當(dāng)前目錄下創(chuàng)建一個名為 GitTest 的目錄间涵,其中包含一個 .git 的目錄,用于保存?zhèn)}庫的所有信息榜揖。

如果想指定克隆到本機(jī)的倉庫的名字勾哩,可以使用如下命令格式:

git clone [url]  [倉庫名字]

示例:

git clone https://gitee.com/guobinyong/GitTest.git  Test

6.2. 基本概念

我們先來理解下Git 工作區(qū)、暫存區(qū)和版本庫概念

  • 工作區(qū):就是你在電腦里能看到的目錄举哟。
  • 倉庫:工作區(qū)有一個隱藏目錄 .git思劳,它不屬于工作區(qū),而是Git的倉庫妨猩。它里面存放著Git倉庫的所有數(shù)據(jù)潜叛;
  • 暫存區(qū):英文叫 stage 或 index ,一般存放在倉庫(.git 目錄)下的 index 文件(.git/index)中壶硅,所以有時我們也會把暫存區(qū)也叫作索引(index)威兜。
  • 版本庫:版本庫是倉庫中用來存放Git版本(提交記錄)的地方,

下圖展示了倉庫庐椒、版本庫椒舵、暫存區(qū) 和 工作區(qū) 之間的關(guān)系:


工作區(qū)暫存區(qū)版本庫之間的關(guān)系

6.3. 提交版本

要把更改添加到版本庫,需要兩步:

  1. git add 命令把更改添加到暫存區(qū)约谈;
  2. git commit 命令將暫存區(qū)中的所有內(nèi)容提交到 版本庫笔宿,生成新的版本節(jié)點犁钟;

下面具體演示下操作步驟:

  1. 在項目目錄下創(chuàng)建一個文件 file1.txt,內(nèi)容如下:
a
a
a
a
a
  1. 查看一下當(dāng)前工作區(qū)的狀態(tài)
git status
git_status_1

輸出結(jié)果提示 file1.txt 未被跟蹤措伐;

  1. 使用如下命令將 file1.txt 文件添加到暫存區(qū)
git add file1.txt 

若想一次添加所有的文件特纤,可以使用以下方式之一:

  • git add . : 添加新文件(new)和被修改(modified)文件,不包括被刪除(deleted)文件侥加;在Shell里捧存,后面的 . 代表當(dāng)前目錄, 所以相當(dāng)于將當(dāng)前目錄傳給了 add 命令担败;
  • git add * :添加所有非隱藏的的文件的變化昔穴;* 是 shell 語言中的通配符,能匹配所有非隱藏的文件 和 目錄提前,所以相當(dāng)于將匹配的到文件和目錄都傳給了 add 命令吗货;
  • git add -A :添加所有變化;
  • git add -u : 添加被修改(modified)和 被刪除(deleted)文件狈网,不包括新文件(new)宙搬;

再查看一下工作區(qū)的狀態(tài)


git_status_2

file1.txt 未跟蹤的信息已經(jīng)沒有了;但列出了一些將被提交的文件拓哺;

  1. 我們再次修改一下 file1.txt 的內(nèi)容勇垛,將第3行換成 b,內(nèi)容如下:
a
a
b
a
a

然后再查看一下工作區(qū)的狀態(tài):


git_status_3

又多了一條新提示士鸥,提示我們有一個 file1.txt 文件的修改沒有被暫存闲孤;

  1. 再次添加變更
git add file1.txt 

add 是個多功能命令,根據(jù)目標(biāo)文件的狀態(tài)不同烤礁,此命令的效果也不同:可以用它開始跟蹤新文件讼积,或者把已跟蹤的文件放到暫存區(qū),還能用于合并時把有沖突的文件標(biāo)記為已解決狀態(tài)等脚仔;

再查看一下工作區(qū)的狀態(tài)


git_status_2

跟第一次執(zhí)行 git add file1.txt 后的結(jié)果一樣勤众,這意味著 對同一個文件暫存多次變更,git 會合并多次變更鲤脏,視為一個變更决摧;

  1. 用如下命令將暫存區(qū)中的變更提交到版本庫,并為這次提交創(chuàng)建一個新的版本凑兰;
git commit

這種方式會啟動文本編輯器以便輸入本次提交的說明掌桩,如下圖。(默認(rèn)會啟用 shell 的環(huán)境變量 $EDITOR 所指定的軟件姑食,一般都是 vim 或 emacs波岛。當(dāng)然也可以使用 git config --global core.editor 命令設(shè)定你喜歡的編輯軟件。)

git_commit_1

另外也可以用 -m 參數(shù)后跟提交說明的方式音半,在一行命令中提交更新:

git commit -m “說明文字"

Git 提供了一個跳過使用暫存區(qū)域的方式则拷,只要在提交的時候贡蓖,給 git commit 加上 -a 選項 git commit -a ,Git 就會自動把所有已經(jīng)跟蹤過的文件暫存起來一并提交煌茬,從而跳過 git add 步驟:

git commit -a -m ‘文字說明'

提交完成后斥铺,輸出的日志如下:


git_commit_1_日志

查看一下工作區(qū)的狀態(tài),如下:


git_status_4

以上這些步驟就演示了將變更從工作區(qū)添加到版本庫的過程坛善;

6.4. 查看提交歷史

我們可通過 log 命令來查看提交的歷史晾蜘;

git log
git_log_1

以 ASCII 圖形的方式查看提交歷史

git log --graph
git_log_1_graph

最近的更新排在最上面。每次更新都有一個 SHA-1 校驗和眠屎、作者的名字和電子郵件地址剔交、提交時間,最后縮進(jìn)一個段落顯示提交說明改衩。

有時候圖形化工具更容易展示歷史提交的變化岖常,隨 Git 一同發(fā)布的 gitk 就是這樣一種工具。它是用 Tcl/Tk 寫成的葫督,基本上相當(dāng)于 git log 命令的可視化版本竭鞍,凡是 git log 可以用的選項也都能用在 gitk 上。在項目工作目錄中執(zhí)行 gitk 命令后橄镜,就會啟動圖 2-2 所示的界面偎快。

Gitk效果圖

上半個窗口顯示的是歷次提交的分支祖先圖譜,下半個窗口顯示當(dāng)前點選的提交對應(yīng)的具體差異蛉鹿。

6.5. 推送數(shù)據(jù)到遠(yuǎn)程倉庫

目前滨砍,我們新提交的所有數(shù)據(jù)都只是存放在本地的版本庫(.git目錄)中往湿,遠(yuǎn)程倉庫中還沒有這些數(shù)據(jù)妖异;我們可以查看一下遠(yuǎn)程倉庫中,確定下领追;

Git 跟 Subversion 不同他膳, Subversion 中只要一提交,數(shù)據(jù)就會被推到遠(yuǎn)程倉庫中了绒窑;造成這些區(qū)別的原因是 Git 是布式的版本控制系統(tǒng)棕孙,而 Subversion 是集中式的版本控制系統(tǒng);

集中式
分布式

通過 push 命令些膨,可把本地倉庫中的數(shù)據(jù)推送到遠(yuǎn)程倉庫:

git push
git_push_1

此時蟀俊,可以查看一下遠(yuǎn)程倉庫中,看是否已經(jīng)包含了我們的新提交订雾;

6.6. 拉取遠(yuǎn)程倉庫中的更新

如果有其他人往遠(yuǎn)程遠(yuǎn)程倉庫上推送了新的提交肢预,我們可以執(zhí)行以下命令來獲取新的提交:

git pull

6.7. 忽略某些文件

有時候我們可能想忽略一些文件,比如:node_mode洼哎、.idea 等等烫映,但是沼本,在執(zhí)行 statusadd 命令時,總是顯示這些文件锭沟,甚至一不小心就提交了這些文件抽兆;這時我們可以在工作區(qū)根目錄下創(chuàng)建一個名為 .gitignore 的文件,在該文件中列出要忽略的文件模式辫红;這樣,Git 就不會在跟蹤和顯示這些文件了瞧筛;

文件 .gitignore 的格式規(guī)范如下:

  • 所有空行或者以注釋符號 # 開頭的行都會被 Git 忽略厉熟。
  • 在一行的末尾添加注釋,會使該行被Git忽略较幌,所以注釋只能獨占一行揍瑟,不能添加在行的末尾;
  • 可以使用標(biāo)準(zhǔn)的 glob 模式匹配乍炉。
  • 匹配模式最后跟反斜杠(/)說明要忽略的是目錄绢片。
  • 要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反岛琼。

所謂的 glob 模式是指 shell 所使用的簡化了的正則表達(dá)式底循。

.gitignore 文件的例子:

# 此為注釋 – 將被 Git 忽略

# 忽略所有 .a 結(jié)尾的文件
*.a

# 但 lib.a 除外
!lib.a

# 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
/TODO

# 忽略 build/ 目錄下的所有文件
build/

# 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt

7. 分支

與 Subversion 不同 Git 中的分支槐瑞,其實本質(zhì)上僅僅是個指向 commit 對象的可變指針熙涤,它總是指向最后一次的提交對象。在創(chuàng)建倉庫時困檩,Git 會自動創(chuàng)建一個名叫 master 的默認(rèn)分支祠挫;

7.1. 查看分支

git branch
git_branch_1

* 標(biāo)記的分支是當(dāng)前所在的分支;

7.2. 創(chuàng)建分支

創(chuàng)建一個名叫 dev 的分支

git branch dev

再查看一下分支


git_branch_2

你會發(fā)現(xiàn)多了一個 dev 分支悼沿;但當(dāng)前仍處在 master 分支下等舔;也就是說,用 branch 創(chuàng)建新分支時糟趾,并不會自動切換到新分支上慌植;

7.3. 切換分支

我們可以用如下命令切換分支:

git checkout dev
git_checkout_1

驗證一下是否切換過去


git_branch_3

7.4. 創(chuàng)建并切換分支

創(chuàng)建分支,再切換過去义郑,需要兩步蝶柿,如果想一步完成,也是可以的非驮,只需要用帶 -b 選項的 checkout 命令即可:

git checkout -b bug

驗證一下


git_branch_4

發(fā)現(xiàn)交汤,已經(jīng)創(chuàng)建了一個 bug 分支,并且也已經(jīng)切換到 bug 分支上了院尔;

7.5. 分支共用工作區(qū)

  1. 在 bug 分支下新增一個 file2.txt 文件蜻展,內(nèi)容如下:
b
b
b
b
b
  1. 將該文件添加到暫存區(qū)喉誊,并提交;
git add -A
git commit -m "版本2" 
  1. 切換到 master 分支
git checkout master

再查看一下工作區(qū)里的內(nèi)容


ls_1

你會發(fā)現(xiàn)纵顾,剛才建的那個文件 file2.txt 沒有了伍茄,因為 master 下沒有 file2.txt 文件,file2.txt 在 bug 分支下施逾;

這也說明:

  • 分支 是共用 工作區(qū)的敷矫;
  • 切換分支時,Git 會自動將工作區(qū)里的內(nèi)容置為當(dāng)前分支的內(nèi)容汉额;

7.6. 查看所有分支的提交歷史

git log 命令默認(rèn)只能查看指定分支的提交歷史曹仗,可視化命令 gitk 也是,如果想查看所有分支的提交歷史蠕搜,可以給 git log 或者 gitk 添加 --all 選項怎茫;如下:

git log --all

可視化界面查看

gitk --all

git log --all的輸出結(jié)果如下:

git_log_2

其中 HEAD -> master 表示當(dāng)前在 master 分支下,HEAD 表示當(dāng)前工作區(qū)對應(yīng)的哪個分支 或 提交妓灌;

從輸出結(jié)果中可以看到 master 和 dev 分支還指向同一個提交轨蛤,而 bug 分支 指向另一個提交;這是因為創(chuàng)建 dev 和 bug 分支時虫埂,是處在 master 分支下祥山,創(chuàng)建的新分支會自動 和 當(dāng)時所在分支 指向同一提交;所以 master 和 dev 分支還指向同一個提交掉伏,而后來 bug 分支里單獨提交一個版本缝呕,所以 bug 分支指向了另一個提交;

7.7. 分支只是一個指針并且共享共同的歷史

如果沒做切換斧散,當(dāng)前還是在 master 分支供常;

  1. 接下來我們在 master 分支里更改一下 file1.txt 的內(nèi)容,將 第3行 的內(nèi)容改成 a3颅湘,如下:
a
a
a3
a
a
  1. 暫存并提交這次更改话侧,這次我們使用一個快捷的命令
git commit -a  -m "版本3"

添加 -a 選項可以自動暫存 所有已跟蹤的文件(被修改(modified)和 被刪除(deleted)文件栗精,但不包括新文件(new))闯参,并直接提交;

  1. 查看一下全部分支的提交歷史 git log --graph --all --oneline悲立,其中 --oneline 選項是將提交信息放在一行顯示鹿寨;
    git_log_3

從輸出結(jié)果中可以看到,master 分支指向了剛才提交的新版本 6dad279 版本3薪夕,此時 master脚草、dev、bug 分支都指向了不同的提交原献,但是馏慨,它們的版本歷史中都有 2a40918 版本1埂淮,這是它們共享的提交對象;

并且從結(jié)果中也可以看到:
整個倉庫的提交歷史只有一個写隶,但倉庫中可以有多個分支(如:master倔撞、dev、bug )慕趴,而每個分支都會指向一個提交痪蝇;所以,在 Git 中冕房,分支只是一個指針躏啰,對提交的一個引用,不同分支間可以有共同的提交歷史耙册;

7.8. 合并分支

為了給大家演示一下沖突给僵,我們先制造一些沖突;

  1. 切換到 bug 分支 git checkout bug 详拙;
  2. file1.txt 文件的第3行改成 a4 想际,內(nèi)容如下:
a
a
a4
a
a
  1. 暫存并提交改動 git commit -a -m "版本4"
  2. 將 master 分支的變更合并到 當(dāng)前分支(bug分支):
    合并分支用 merge 命令溪厘,如下:
git merge master
git_merge

從輸出中胡本,我們可以看到,合并失敗了畸悬,因為 file1.txt 文件沖突了侧甫;如果沒有沖突,合并就自動完成蹋宦,并會彈出文本編輯器讓你輸出此次合并的提交信息披粟;

為什么 file1.txt 文件會沖突了呢?
因為 我們在 master 和 bug 分支下都改了第3行的內(nèi)容冷冗,所以沖突了守屉;

什么情況下才會沖突?

兩個分支修改了同一文件的同一位置(簡單來說蒿辙,就是修改的內(nèi)容有交叉)就會導(dǎo)致合并時產(chǎn)生沖突拇泛,如果修改的是不同文件 或者 是同一文件的不同位置,也不會導(dǎo)致沖突思灌;

7.9. 查看沖突內(nèi)容

我們可以使用如下命令查看沖突的內(nèi)容

git diff
git_diff

輸出中顯示出了沖突的文件file1.txt俺叭,和沖突的內(nèi)容,其中 <<<<<<< 之上 和 >>>>>>> 之下的內(nèi)容是共同的內(nèi)容泰偿,非沖突的內(nèi)容熄守; <<<<<<<======= 之間是當(dāng)前分支中沖突的內(nèi)容, =======>>>>>>> 之間是其它分支中沖突的內(nèi)容;

我們也可以直接在編輯器中查看沖突的文件內(nèi)容:


vscode_1

7.10. 解決沖突

由于語義的復(fù)雜性裕照,Git 目前還不會幫我們自動解決沖突攒发,我們需要自己來解決;

如果此時我們想終止合并晋南,可以使用如下命令:

git merge --abort

如果我們要繼續(xù)合并晨继,需要先解決沖突,解決沖突的方法如下:

  1. 根據(jù)需要決定如何保留和更改沖突的內(nèi)容搬俊;
  2. 移除沖突的標(biāo)記文行 <<<<<<<紊扬、=======>>>>>>>唉擂;
  3. 使用 add 命令將沖突標(biāo)記為已解決 git add file1.txt 或者 直接標(biāo)識所有 git add .
  4. 提交變更 git commit餐屎;
    git_commit_2.png

    這會彈出文本編輯器讓你輸出此次合并的提交信息,里面默認(rèn)有表達(dá)合并的操作的提交信息玩祟,使用默認(rèn)的即可腹缩;

當(dāng)沖突解決了并提交后,合并操作也就完成了空扎;此時查看一下整個倉庫的版本歷史:

git log --all --graph
git_log_4

從輸出結(jié)果中可以看到藏鹊,合并會產(chǎn)生一個新的提交對象 ebb0d5b95a3e30127379a862de42ad96812d0720 ,并且分支當(dāng)前分支(bug分支)已經(jīng)指向了這個新的合并對象转锈;但 master 分支仍然指向的是原來的提交對象 9e32b1556d3259e9193b19942ef76756c7e6afd3 版本3盘寡,因為我們是將 master 分支的內(nèi)容 合并到 當(dāng)前分支(bug分支),合并改變的是當(dāng)前分支撮慨,并不會影響 master 分支竿痰;

7.11. 刪除分支

如果我們想刪除一個分支(比如 dev 分支),我們可以使用如下命令:

git branch -d dev

8. 獲取幫助

想了解 Git 的各式工具該怎么用砌溺,可以閱讀它們的使用幫助影涉,方法有三:

  • $ git help [命令]
  • $ git [命令] --help
  • $ man git

比如,要學(xué)習(xí) config 命令可以怎么用规伐,運行:

$ git help config

幫助文檔采用BNF語法格式描述規(guī)范描述命令行的語法蟹倾,BNF語法格式的元字符及其含義如下:
[ ]:可選內(nèi)容;
< >:必須給出內(nèi)容猖闪;
{ }:可重復(fù)0至無數(shù)次的內(nèi)容鲜棠;
a|b|c:多選一;
:可以有多個萧朝;

備注:關(guān)于BNF的詳細(xì)內(nèi)容可參考《語法格式描述規(guī)范BNF和ABNF

9. Git和Subversion的命令的對比

詳情請看Git和Subversion的命令的對比

10. 相關(guān)文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岔留,一起剝皮案震驚了整個濱河市夏哭,隨后出現(xiàn)的幾起案子检柬,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件何址,死亡現(xiàn)場離奇詭異里逆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)用爪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門原押,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人偎血,你說我怎么就攤上這事诸衔。” “怎么了颇玷?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵笨农,是天一觀的道長禽绪。 經(jīng)常有香客問我环壤,道長,這世上最難降的妖魔是什么汗唱? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任空郊,我火速辦了婚禮份招,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狞甚。我一直安慰自己锁摔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布哼审。 她就那樣靜靜地躺著鄙漏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棺蛛。 梳的紋絲不亂的頭發(fā)上怔蚌,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機(jī)與錄音旁赊,去河邊找鬼桦踊。 笑死,一個胖子當(dāng)著我的面吹牛终畅,可吹牛的內(nèi)容都是我干的籍胯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼离福,長吁一口氣:“原來是場噩夢啊……” “哼杖狼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妖爷,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤蝶涩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绿聘,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡嗽上,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了熄攘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兽愤。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挪圾,靈堂內(nèi)的尸體忽然破棺而出浅萧,到底是詐尸還是另有隱情,我是刑警寧澤哲思,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布惯殊,位于F島的核電站,受9級特大地震影響也殖,放射性物質(zhì)發(fā)生泄漏土思。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一忆嗜、第九天 我趴在偏房一處隱蔽的房頂上張望己儒。 院中可真熱鬧,春花似錦捆毫、人聲如沸闪湾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽途样。三九已至,卻和暖如春濒憋,著一層夾襖步出監(jiān)牢的瞬間何暇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工凛驮, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留裆站,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓黔夭,卻偏偏與公主長得像宏胯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子本姥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

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

  • 一肩袍、基本概念: 注:對于git的分布式概念及其優(yōu)點,不重復(fù)說明婚惫,自己百度或谷歌氛赐。本文中涉及到指令前面有$的魂爪,在cm...
    大廠offer閱讀 1,425評論 0 3
  • 還是老規(guī)矩,這篇看完后鹰祸,還是學(xué)不會git版本控制的甫窟,你來砍我 是兄弟就來砍我吧C芑搿M苡ぁ! Git是分布式版本控制系統(tǒng)尔破,...
    Zteen閱讀 3,168評論 0 6
  • Git 是目前最流行的分布式版本控制系統(tǒng)之一街图。 版本控制指的是,記錄每次版本變更的內(nèi)容和時間等細(xì)節(jié)懒构,保留各版本之間...
    神齊閱讀 1,421評論 0 7
  • 為什么選擇GIT餐济? Git自從2005年問世以來,已經(jīng)逐步成為本地和分布環(huán)境下版本控制的事實標(biāo)準(zhǔn)胆剧。Git最早由Li...
    技匠閱讀 10,787評論 12 235
  • 上周五12號秩霍,騰訊又為“親兒子”小程序打開了一個流量入口篙悯,開放了小程序“搜索聯(lián)想?yún)^(qū)”功能,用戶可在搜索時僅輸入一個...
    流明咖啡店閱讀 294評論 0 0