Git 版本管理系統(tǒng)的使用

[TOC]

背景

以前協(xié)同修改文件的方法:

  1. 通過復(fù)制文件來備份不同版本,按照日期等命名規(guī)則來區(qū)分。

  2. 文件共享州刽,大家都能編輯,容易被別人的修改覆蓋浪箭,所以需要文件名加上編輯者的名字穗椅。

Git解決的問題

  • 以前方式比較麻煩、容易出錯(cuò)奶栖。

Git是一個(gè)分布式版本管理系統(tǒng)房待,是為了更好地管理Linux內(nèi)核開發(fā)而創(chuàng)立的。

Git可以在任何時(shí)間點(diǎn)驼抹,把文檔的狀態(tài)作為更新記錄保存起來桑孩。因此可以把編輯過的文檔復(fù)原到以前的狀態(tài),也可以顯示編輯前后的內(nèi)容差異框冀。

而且流椒,編輯舊文件后,試圖覆蓋較新的文件的時(shí)候(即上傳文件到服務(wù)器時(shí))明也,系統(tǒng)會(huì)發(fā)出警告宣虾,因此可以避免在無意中覆蓋了他人的編輯內(nèi)容。

管理歷史記錄的數(shù)據(jù)庫(Repository)

數(shù)據(jù)庫是記錄文件或目錄狀態(tài)的地方温数,存儲(chǔ)著內(nèi)容修改的歷史記錄绣硝。在數(shù)據(jù)庫的管理下,把文件和目錄修改的歷史記錄放在對(duì)應(yīng)的目錄下撑刺。

本地?cái)?shù)據(jù)庫

為了方便用戶個(gè)人使用鹉胖,在自己的機(jī)器上配置的數(shù)據(jù)庫。

遠(yuǎn)程數(shù)據(jù)庫(共享數(shù)據(jù)庫)

配有專用的服務(wù)器,為了多人共享而建立的數(shù)據(jù)庫甫菠。
如果想要公開在本地?cái)?shù)據(jù)庫中修改的內(nèi)容挠铲,把內(nèi)容上傳到遠(yuǎn)程數(shù)據(jù)庫就可以了。另外寂诱,通過遠(yuǎn)程數(shù)據(jù)庫還可以取得其他人修改的內(nèi)容拂苹。

創(chuàng)建數(shù)據(jù)庫的方法

有兩種方法:

  • 創(chuàng)建全新的數(shù)據(jù)庫。
  • 復(fù)制遠(yuǎn)程數(shù)據(jù)庫痰洒。

修改記錄的提交

若要把文件或目錄的添加和變更保存到數(shù)據(jù)庫瓢棒,就需要進(jìn)行提交。

執(zhí)行提交后丘喻,數(shù)據(jù)庫中會(huì)生成上次提交的狀態(tài)與當(dāng)前狀態(tài)的差異記錄(也被稱為revision)脯宿。

系統(tǒng)會(huì)根據(jù)修改的內(nèi)容和目錄結(jié)構(gòu)使用SHA1哈希函數(shù)計(jì)算出沒有重復(fù)的40位16進(jìn)制的英文及數(shù)字來給提交命名。指定這個(gè)命名仓犬,就可以在數(shù)據(jù)庫中找到對(duì)應(yīng)的提交嗅绰。

工作樹和索引

在Git管理下舍肠,我們實(shí)際操作的目錄就是工作樹搀继。

在數(shù)據(jù)庫和工作樹之間有索引,索引是為了向數(shù)據(jù)庫提交作準(zhǔn)備的區(qū)域翠语。

https://ws1.sinaimg.cn/large/006tKfTcgy1ftn4p78kw4j30fv07a0tg.jpg

基礎(chǔ)配置

三個(gè)配置文件

Git工作環(huán)境變量三個(gè)存放位置:

  • /etc/gitconfig:對(duì)系統(tǒng)所有用戶都普遍適用的配置叽躯。
  • ~/.gitconfig:只適用當(dāng)前用戶的配置。
  • your-project/.git/config:只適用當(dāng)前項(xiàng)目的配置肌括。

重要配置1:用戶信息

$ git config --global user.name "dszkng"
$ git config --global user.email dszkng@outlook.com

這兩項(xiàng)代表著是哪個(gè)用戶提交的点骑。
使用--global選項(xiàng)時(shí)說明配置的是當(dāng)前用戶主目錄下這個(gè)配置文件。

重要配置2:文本編輯器

Git需要你輸入一些額外消息的時(shí)候谍夭,會(huì)自動(dòng)調(diào)用一個(gè)外部文本編輯器給你用黑滴。默認(rèn)會(huì)使用操作系統(tǒng)指定的默認(rèn)編輯器,一般可能會(huì)是Vi或者Vim紧索。如果你有其他偏好袁辈,可以重新設(shè)置:

$ git config --global core.editor emacs

重要配置3:差異分析工具

在解決合并沖突時(shí)使用哪種差異分析工具?
比如要改用vimdiff的話:

$ git config --global merge.tool vimdiff

Git可以理解kdiff3珠漂,tkdiff晚缩,meldxxdiff媳危,emerge荞彼,vimdiffgvimdiff待笑,ecmerge鸣皂,和 opendiff等合并工具的輸出信息。當(dāng)然,你也可以指定使用自己開發(fā)的工具签夭。

查看配置信息

$ git config --list
credential.helper=osxkeychain
user.name=dszkng
user.email=dszkng@outlook.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
remote.origin.url=ssh://gogs@git.genecard.cn:2222/zhichun/zc-cms.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

$ git config user.email
dszkng@outlook.com

有時(shí)候會(huì)看到重復(fù)的變量名齐邦,那就說明它們來自不同的配置文件,不過最終Git實(shí)際采用的是最后一個(gè)第租。

基本使用

Git思想及基本工作原理

只有掌握了基本的原理措拇,用起來才會(huì)知其所以然,游刃有余慎宾。

分支(branch)操作

使用場(chǎng)景

在開發(fā)軟件時(shí)丐吓,可能有多人同時(shí)為同一個(gè)軟件(并行)開發(fā)功能修復(fù)Bug,可能存在多個(gè)Release版本趟据,并且需要對(duì)各個(gè)版本進(jìn)行維護(hù)券犁。

所幸,Git的分支功能可以支持同時(shí)進(jìn)行多個(gè)功能的開發(fā)和版本管理汹碱。

什么是分支粘衬?

分支是為了將修改記錄的整體流程分叉保存。分叉后的分支不受其他分支的影響咳促,所以在同一個(gè)數(shù)據(jù)庫里可以同時(shí)進(jìn)行多個(gè)修改稚新。

為了不受其他開發(fā)人員的影響,一般是在主分支上建立自己專用的分支跪腹。完成工作后褂删,將自己分支上的修改合并到主分支。因?yàn)槊恳淮翁峤坏臍v史記錄都會(huì)被保存冲茸,所以當(dāng)發(fā)生問題時(shí)屯阀,定位和修改造成問題的提交就容易多了。

創(chuàng)建分支

$ git branch branch_name
  • 切換并創(chuàng)建分支
$ git checkout -b branch_name
  • 查看創(chuàng)建過的分支
$ git branch

切換分支

$ git checkout branch_name

在切換工作分支時(shí)需要進(jìn)行checkout操作轴术。Git會(huì)從工作樹還原向目標(biāo)分支提交的修改內(nèi)容难衰。checkout之后的提交記錄將被追加到目標(biāo)分支。

  • HEAD

HEAD指向的是現(xiàn)在使用中的分支的最后一次更新逗栽。通常默認(rèn)指向master分支的最后一次更新盖袭。通過移動(dòng)HEAD,就可以變更使用的分支祭陷。

ps:提交時(shí)使用~(tilde)^(caret)就可以指定某個(gè)提交的相對(duì)位置苍凛。
比如對(duì)于:HEAD3 -> HEAD2 -> HEAD1 -> HEAD(master)。
HEAD1HEAD~1HEAD~^表示兵志。
HEAD2HEAD~2HEAD~1^1表示醇蝴。
HEAD3HEAD~3HEAD~1^2HEAD~2^1表示。

  • stash(暫存區(qū))

stash是臨時(shí)保存文件修改內(nèi)容的區(qū)域想罕。stash可以暫時(shí)保存工作樹索引里還沒提交的修改內(nèi)容悠栓,等事后再取出暫存的修改霉涨,應(yīng)用到原先的分支或其他的分支上。

ps:如果在還未提交的修改內(nèi)容以及新添加的文件惭适,留在索引區(qū)域工作樹的情況下切換到其他的分支時(shí)笙瑟,修改內(nèi)容會(huì)從原來的分支移動(dòng)到目標(biāo)分支。

但是如果在checkout的目標(biāo)分支中相同的文件也有修改癞志,checkout會(huì)失敗的往枷。這時(shí)要么先提交修改內(nèi)容,要么用stash暫時(shí)保存修改內(nèi)容后再checkout凄杯。

合并分支

$ git merge branch_name

將完成作業(yè)的Topic分支合并到Merge分支有兩種方法错洁,合并后分支的歷史記錄會(huì)有很大的差別。

比如bugfix分支是從master分支分叉出來的戒突,bugfix合并到master時(shí):

image

  • merge
$ git merge branch_name
  1. 如果master分支狀態(tài)沒有被更改過屯碴,bugfix分支的歷史記錄包含master分支所有的歷史記錄,這時(shí)候合并是最簡(jiǎn)單的膊存,這就是快進(jìn)(fast-forward)合并导而。
    image
  2. 如果master分支在分叉之后又有了更新,這種情況下隔崎,要把master分支的修改內(nèi)容和bugfix分支的修改內(nèi)容匯合起來今艺。因此,合并兩個(gè)修改會(huì)生成一個(gè)提交仍稀。這時(shí)洼滚,master分支的HEAD會(huì)移動(dòng)到該提交上埂息。
    image

ps:執(zhí)行合并時(shí)技潘,如果設(shè)定了non fast-forward選項(xiàng),即使在能夠fast-forward合并的情況下也會(huì)生成新的提交并合并千康。

image

  • rebase
$ git init
$ vim a.txt # 新增a.txt享幽,內(nèi)容:create file
$ git commit -a -m 'first commit'
$ git branch issue # 新建issue分支
$ vim a.txt # 修改文件制造沖突條件,增加內(nèi)容:first edit
$ git commit -a -m 'update a.txt in master branch'
$ git checkout issue # 切換分支
$ vim a.txt # 修改文件拾弃,增加內(nèi)容:second edit
$ git commit -a -m 'update a.txt in issue branch'
$ git rebase master # 合并master和issue值桩,但是會(huì)沖突
$ vim a.txt # 修改沖突內(nèi)容
$ git add . # 不需要commit
$ git rebase --continue # 繼續(xù)修改沖突后的提交
$ git rebase --abort # 如果要取消rebase的話
$ git checkout master
$ git merge issue # 這時(shí)候執(zhí)行合并操作,實(shí)際進(jìn)行的是fast-forward合并

bugfix分支的歷史記錄會(huì)添加在master分支的后面豪椿。歷史記錄成一條線奔坟,相當(dāng)整潔。
rebase操作可能會(huì)有沖突搭盾,需要修改各自產(chǎn)生沖突的部分咳秉。rebase之后,masterHEAD位置不變鸯隅。因此澜建,要合并master分支和bugfix分支,即是將masterHEAD移動(dòng)到bugfixHEAD這里。

image

image

psmergerebase都是合并歷史記錄炕舵,但是各自的特征不同何之。

  • merge
    保持修改內(nèi)容的歷史記錄,但是歷史記錄會(huì)很復(fù)雜咽筋。
  • rebase
    歷史記錄簡(jiǎn)單溶推,是在原有提交的基礎(chǔ)上將差異內(nèi)容反映進(jìn)去
    因此奸攻,可能導(dǎo)致原本的提交內(nèi)容無法正常運(yùn)行悼潭。

刪除分支

$ git branch -d branch_name

分支實(shí)踐

兩種分支

分支可以被任意創(chuàng)建,但是舞箍,要先確定運(yùn)用規(guī)則才可以有效地利用分支舰褪。

  • Merge分支

Merge分支是為了可以隨時(shí)發(fā)布release而創(chuàng)建的分支,它還能作為Topic分支的源分支使用疏橄。保持分支穩(wěn)定的狀態(tài)是很重要的占拍。如果要進(jìn)行更改,通常先創(chuàng)建Topic分支捎迫,而針對(duì)該分支晃酒,可以使用Jenkins之類的CI工具進(jìn)行自動(dòng)化編譯以及測(cè)試。

通常窄绒,大家會(huì)將master分支當(dāng)作Merge分支使用贝次。

ps:在數(shù)據(jù)庫初次提交后,Git會(huì)默認(rèn)創(chuàng)建一個(gè)master分支彰导,不修改分支情況下蛔翅,每次修改提交都是在master分支上。

  • Topic分支

Topic分支是為了開發(fā)新功能修復(fù)Bug等任務(wù)而建立的分支位谋。若要同時(shí)進(jìn)行多個(gè)的任務(wù)山析,請(qǐng)創(chuàng)建多個(gè)的Topic分支。
Topic分支是從穩(wěn)定的Merge分支創(chuàng)建的掏父。完成作業(yè)后笋轨,要把Topic分支合并回Merge分支。

常用分支

  • 主分支
    • master:只負(fù)責(zé)管理發(fā)布的狀態(tài)赊淑,在提交時(shí)使用標(biāo)簽記錄發(fā)布版本號(hào)爵政。
    • develop:日常開發(fā)分支。
  • release分支
    • release-2018.9:從develop分叉出陶缺,為release作準(zhǔn)備的分支钾挟,做最后的調(diào)整,再合并到develop分支组哩。
    • release-2017.8
  • 特性分支(topic分支)
    • feature:日常新功能開發(fā)等龙。
    • bugfix:從release分支分叉出处渣,解決完bug問題,最后合并到release分支蛛砰。
  • hotfix分支
    • hotfix-20180805:從master分支分叉出罐栈,解決完緊急bug問題,最后合并到develop分支泥畅。因?yàn)橹苯訌?code>develop分支創(chuàng)建可以發(fā)布的版本要花許多的時(shí)間荠诬,所以最好選擇從master分支創(chuàng)建。
    • hotfix-20180802

遠(yuǎn)程分支操作

fetch

  • 四種用法
$ git fetch # 更新git remote中所有的遠(yuǎn)程repo所有branch的最新commit_id位仁,將其記錄到.git/FETCH_HEAD文件中柑贞。

$ git fetch remote_repo # 只更新名稱為remote_repo的遠(yuǎn)程repo上的所有branch的最新commit_id,將其記錄聂抢。 

$ git fetch remote_repo remote_branch_name # 只更新名稱為remote_repo的遠(yuǎn)程repo上的remote_branch_name分支钧嘶。

$ git fetch remote_repo remote_branch_name:local_branch_name # 同上,并在本地創(chuàng)建local_branch_name分支來保存遠(yuǎn)端分支的所有數(shù)據(jù)琳疏。

psFETCH_HEAD是一個(gè)版本鏈接有决,記錄在本地的.git/FETCH_HEAD文件中,指向目前已經(jīng)從遠(yuǎn)程倉庫取下來的分支的末端版本空盼。

pull

  • 運(yùn)行過程
    首先书幕,基于本地的FETCH_HEAD記錄,比對(duì)本地的FETCH_HEAD記錄與遠(yuǎn)程倉庫的版本號(hào)揽趾,然后git fetch獲得當(dāng)前指向的遠(yuǎn)程分支的后續(xù)版本的數(shù)據(jù)台汇,然后再利用git merge將其與本地的當(dāng)前分支合并。

push

標(biāo)簽(tag)操作

使用場(chǎng)景

通常在發(fā)版本時(shí)會(huì)給版本庫打個(gè)tag篱瞎,這個(gè)tag就是這次版本的快照苟呐,指向某個(gè)commit的指針,類似于branch奔缠,但是tag不能像branch一樣可以移動(dòng)掠抬。

好處是查找以前某個(gè)版本時(shí)不用記0348411ee60d4951aa53afb50bc7d6b1c6d5cdfc這種長(zhǎng)串的commit_id吼野,通過tag來查找更清晰明了校哎。

兩種標(biāo)簽

  • 輕標(biāo)簽:只添加名稱。
  • 注解標(biāo)簽:添加名稱瞳步、注解和簽名闷哆。

打標(biāo)簽

$ git tag tag_name # 不帶注解
$ git tag -a tag_name # 調(diào)用編輯器來寫注解
$ git tag -am "注解" tag_name # 簡(jiǎn)單字符串注解
  • commit的歷史記錄打上標(biāo)簽:
$ git tag v0.1 0348411

查看標(biāo)簽

$ git tag
$ git tag -n # 查看標(biāo)簽和注解信息
  • 列出的tag是按名稱排序的,也可以查看某個(gè)tag的詳細(xì)信息:
$ git show tag_name

刪除標(biāo)簽

  • 本地刪除:
$ git tag -d tag_name
  • 刪除遠(yuǎn)程標(biāo)簽:
$ git tag -d v1.0 # 先本地刪除
$ git push origin :refs/tags/v1.0 # 遠(yuǎn)程刪除

推送標(biāo)簽

創(chuàng)建的標(biāo)簽都是只存儲(chǔ)在本地的单起,不會(huì)自動(dòng)推送到遠(yuǎn)程抱怔。所以打錯(cuò)的標(biāo)簽可以在本地安全刪除。

  • 推送某個(gè)標(biāo)簽到遠(yuǎn)程:
$ git push origin tag_name
  • 一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽
$ git push origin --tags

已提交(committed)操作

修改最后一次提交

使用選項(xiàng):git commit --amend嘀倒。

$ git log
$ vim xxx # wq
$ git add xxx
$ git commit --amend # 本次修改并入最后一次提交屈留,進(jìn)入編輯局冰,修改提交說明

撤銷/反悔(revert)某次提交

$ git revert HEAD # 撤銷前一次commit
$ git revert HEAD^ # 撤銷前前一次commit
$ git revert commit_id

ps:第三種方式撤銷,在沒有和后面提交相沖突的情況下是直接成功的灌危。
比如說:那次提交是新增了一個(gè)文件康二,后面的每次提交都沒有修改這個(gè)文件,這時(shí)候撤銷那次提交勇蝙,直接做相反的操作把新增的文件刪了沫勿,比較順利。

回退/重置(reset)到某次提交

$ git reset --hard # 最后一次commit
$ git reset --hard HEAD~~ # 回退到前前一次commit
$ git reset --hard ORIG_HEAD # 回退到某次commit

psgit revertgit reset的區(qū)別:

  • git revert是用一次新的commit來回滾之前的commit味混,而git reset是直接刪除指定commit之后的所有commit产雹。

  • 在回滾這一操作上看,效果差不多翁锡。但是在日后繼續(xù)merge以前的老版本時(shí)有區(qū)別蔓挖。因?yàn)?code>git revert是用一次逆向的commit中和之前的提交,因此日后合并老的branch時(shí)馆衔,導(dǎo)致這部分改變不會(huì)再次出現(xiàn)时甚,但是git reset是之間把某些commit在某個(gè)branch上刪除,因而和老的branch再次merge時(shí)哈踱,這些被回滾的commit應(yīng)該還會(huì)被引入荒适。

  • git reset是把HEAD向后移動(dòng)了一下,而git revertHEAD繼續(xù)前進(jìn)开镣,只是新的commit的內(nèi)容和要revert的內(nèi)容正好相反刀诬,能夠抵消要被revert的內(nèi)容。

導(dǎo)入提交

  • 使用場(chǎng)景:
    branch1開發(fā)時(shí)進(jìn)行了多次提交邪财,這時(shí)切換到branch2陕壹,想把之前branch1分支提交的commitcopy過來,怎么辦树埠?
    做法:首先切換到branch1分支糠馆,然后查看提交歷史記錄,也可以用sourceTree查看怎憋,也可以用命令git log又碌。

  • 用法:

$ git checkout branch1
$ git log # 找到想要操作的commit
$ git checkout branch2 # 將commit導(dǎo)入branch2
$ git cherry-pick commit_id # 單個(gè)commit
$ git cherry-pick commit_id1..commit_id2 # commit_id1和commit_id2之間的commit

匯合(合并)提交

  • 用法:
$ git rebase -i HEAD~~

自動(dòng)打開編輯器,HEAD - HEAD~~commit的都被列出來了绊袋,將最后一個(gè)pick改成squash毕匀,保存,進(jìn)入注釋說明編輯癌别,再保存退出皂岔,完成合并(兩個(gè)提交合并成了一個(gè))。

修改提交

參考資料

Git Community Book 中文版
廖雪峰的官方網(wǎng)站 - Git教程
猴子都能懂的GIT入門
Git Book

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末展姐,一起剝皮案震驚了整個(gè)濱河市躁垛,隨后出現(xiàn)的幾起案子剖毯,更是在濱河造成了極大的恐慌,老刑警劉巖教馆,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件速兔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡活玲,警方通過查閱死者的電腦和手機(jī)涣狗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舒憾,“玉大人镀钓,你說我怎么就攤上這事《朴兀” “怎么了丁溅?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)探遵。 經(jīng)常有香客問我窟赏,道長(zhǎng),這世上最難降的妖魔是什么箱季? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任涯穷,我火速辦了婚禮,結(jié)果婚禮上藏雏,老公的妹妹穿的比我還像新娘拷况。我一直安慰自己,他們只是感情好掘殴,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布赚瘦。 她就那樣靜靜地躺著,像睡著了一般奏寨。 火紅的嫁衣襯著肌膚如雪起意。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天病瞳,我揣著相機(jī)與錄音揽咕,去河邊找鬼奴烙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛攒岛,可吹牛的內(nèi)容都是我干的萄唇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼莫矗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嚎于,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤掘而,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后于购,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袍睡,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年肋僧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斑胜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嫌吠,死狀恐怖止潘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辫诅,我是刑警寧澤凭戴,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站炕矮,受9級(jí)特大地震影響么夫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肤视,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一档痪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邢滑,春花似錦钞它、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至操灿,卻和暖如春锯仪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背趾盐。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工庶喜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人救鲤。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓久窟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親本缠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子斥扛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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

  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉庫完整的鏡像下來丹锹。這樣一來稀颁,任何一處協(xié)同...
    __silhouette閱讀 15,855評(píng)論 5 147
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照芬失,而是把代碼倉庫完整的鏡像下來...
    sunnyghx閱讀 3,905評(píng)論 0 11
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,649評(píng)論 4 54
  • 遠(yuǎn)山 夕陽夕伴同相游 無限風(fēng)光無限愁匾灶。 故地重走多感慨棱烂, 何日功成回故鄉(xiāng)。 面對(duì)江面望洋嘆阶女, 滔滔江水永不還颊糜。 是...
    遠(yuǎn)山居士閱讀 186評(píng)論 0 0
  • 2018年3月1日吞瞪,星期四馁启,伍哥讀報(bào)時(shí)間: 1、【上海成立首批罕見病診治中心和屔指眩科門診】上海市衛(wèi)生計(jì)生委28日宣布...
    邢五閱讀 111評(píng)論 0 0