git學(xué)習(xí)筆記(二)—— git的簡單操作

這是本系列學(xué)習(xí)筆記的第二篇
git 學(xué)習(xí)筆記(一)—— 初識(shí) git

前言

本篇文章將簡要的介紹 Git 的一般操作,滿足使用 Git 作為你的版本控制系統(tǒng)的入門級(jí)需求咸产。本文將按工程的一般操作順序進(jìn)行講述盖高。

獲取 Git 倉庫

對(duì)于一個(gè)工程慎陵,一般來說,我們都是從0開始就要進(jìn)行版本控制喻奥。需要我們?cè)谛陆ㄟ@個(gè)工程之初就要添加 git 支持席纽。也有少部分在工程進(jìn)行中添加 git 支持的需求。但是撞蚕,不論你是從何種情景下添加版本控制润梯,都不影響接下來將要進(jìn)行的操作。
又或者甥厦,我們中途加入別人的工程纺铭,則需要克隆(clone)別人的倉庫刀疙。

現(xiàn)有目錄初始化倉庫

對(duì)于第一種情況舶赔,只需要在當(dāng)前目錄下使用

$ git init

該命令會(huì)在當(dāng)前文件夾下生成.git隱藏子目錄,該目錄包含你初始化的 Git 倉庫中所有的必須文件谦秧,這些文件是 Git 的骨干纠修。這時(shí)候,僅僅做了一些初始化的操作芋齿,項(xiàng)目下所有的文件都還沒有被跟蹤。

克隆現(xiàn)有的倉庫

在第二種情況下缘挑,直接獲得已經(jīng)存在的 Git 倉庫的拷貝,需要使用 clone 命令桶略。

$ git clone https://github.com/libgit2/libgit2

這個(gè)命令會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)名為“l(fā)ibgit2”的目錄语淘,并在這個(gè)目錄下初始化.git文件夾,從遠(yuǎn)程倉庫拉取所有的數(shù)據(jù)放入.git文件夾下删性。當(dāng)前目錄下也將拷貝所有當(dāng)前分支的文件供開發(fā)和使用焕窝。當(dāng)然蹬挺,在克隆遠(yuǎn)程倉庫的時(shí)候,可以自定義本地倉庫的名字:

$ git clone https://github.com/libgit2/libgit2 mylibgit

這將執(zhí)行與上一條命令相同的操作它掂,在本地創(chuàng)建的倉庫名稱則會(huì)變成mylibgit

追蹤你的文件

現(xiàn)在我們有了一個(gè)真實(shí)存在的 Git 倉庫巴帮,可以對(duì)倉庫下的所有文件進(jìn)行修改,完成階段性目標(biāo)之后虐秋,提交這些更新到倉庫中榕茧。

在工作目錄下的每一個(gè)文件不外乎兩種狀態(tài):
* 已跟蹤 已經(jīng)納入版本控制的文件。
* 未跟蹤 除了已跟蹤的文件客给,都屬于未跟蹤文件用押。
所有已跟蹤的文件可能處于未修改,已修改和放入暫存區(qū)三種狀態(tài)靶剑。所有使用 Git 時(shí)文件的生命周期如下:

圖1. 文件的狀態(tài)變化周期
圖1. 文件的狀態(tài)變化周期

檢查當(dāng)前文件狀態(tài)

使用git status命令可以查看當(dāng)前目錄下各個(gè)文件分別處在什么狀態(tài)蜻拨,一般來說,文件會(huì)處在四個(gè)不同的狀態(tài):

狀態(tài)一 clean

當(dāng)你克隆一個(gè)工程下來桩引,整個(gè)文件系統(tǒng)會(huì)處在這個(gè)狀態(tài)

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

狀態(tài)二 untracked

在工程中新建一個(gè)“README.md”文件缎讼,并編輯其中的內(nèi)容,這時(shí)候再查看狀態(tài):

$ echo 'title' > README.md
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
    
        README.md
    
nothing added to commit but untracked files present (use "git add" to track)

狀態(tài)三 staged

新建一個(gè)文件之后坑匠,文件并不會(huì)立即被 Git 追蹤血崭,因?yàn)楹芏辔募覀儾⒉幌M浔话姹究刂啤R虼死遄疲麄€(gè)過程希望我們能夠有所選擇夹纫,使用git add <file>命令添加你希望的文件進(jìn)入版本控制中,處于staged狀態(tài)的版本信息设凹,在每個(gè)階段的修改中捷凄,只存在一個(gè)版本。

$ git add README.md
$ git status
On branch master
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
    
    new file:   README.md
    

注意到围来,Git 提示可以使用

$ git rm --cached <file>

將已經(jīng)處于staged狀態(tài)的文件回退到untracked狀態(tài)跺涤。

狀態(tài)四 committed

使用commit命令匈睁,將已經(jīng)暫存起來的更改提交到倉庫中,所有的歷史版本追溯都是以你commit為基準(zhǔn)進(jìn)行回溯的桶错。區(qū)別于staged狀態(tài)下的文件航唆,這樣的版本信息是永久的。

$ git commit -m 'first commit'
[master (root-commit) 33e08ff] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
    
$ git status
On branch master
nothing to commit, working tree clean

我知道院刁,細(xì)心的你已經(jīng)發(fā)現(xiàn)糯钙,這個(gè)狀態(tài)和‘狀態(tài)一’根本就沒有區(qū)別嘛。之所以分別列出來退腥,是想重點(diǎn)的強(qiáng)調(diào)一點(diǎn),基于版本控制的整個(gè)文件系統(tǒng)狡刘,每次commit都是一個(gè)獨(dú)立的版本享潜。在 Git 的歷史版本中都是獨(dú)立并且一視同仁的。

狀態(tài)五 not staged

再次修改“README.md”文件嗅蔬,查看狀態(tài)

$ 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:   README.md
    
no changes added to commit (use "git add" and/or "git commit -a")

not staged狀態(tài)下剑按,處于staged狀態(tài)的對(duì)立面,表示進(jìn)行了修改等操作澜术,但是所有的操作沒有被 Git 暫存起來艺蝴,這個(gè)時(shí)候可以使用add命令將修改暫存,也可以跳過這一步鸟废,直接使用:

$ git commit -a -m 'message'

將所有的修改跳過暫存狀態(tài)猜敢,提交到 Git 倉庫。

提交修改到倉庫

在做協(xié)同開發(fā)的時(shí)候盒延,一般來說會(huì)有一個(gè)遠(yuǎn)程倉庫做大家的同步和備份倉庫使用锣枝。在做好自己的工作之后,提交到本地倉庫之后是不夠的兰英。需要將本地的修改同步到遠(yuǎn)程倉庫撇叁,大家合并各自的部分,才能拼湊成一個(gè)完整的工程畦贸。

合并遠(yuǎn)程倉庫

直接提交本地修改到遠(yuǎn)程倉庫陨闹,很大可能會(huì)由于遠(yuǎn)程倉庫超越本地分支進(jìn)度而被拒絕提交。需要先合并遠(yuǎn)程的修改之后薄坏,解決沖突才能成功提交趋厉。

$ git pull

pull將遠(yuǎn)程倉庫的所有更新文件獲取下來,解決沖突胶坠。再將文件add進(jìn)來君账,commit之后提交。

$ git push origin master
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沈善,一起剝皮案震驚了整個(gè)濱河市乡数,隨后出現(xiàn)的幾起案子椭蹄,更是在濱河造成了極大的恐慌,老刑警劉巖净赴,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绳矩,死亡現(xiàn)場離奇詭異,居然都是意外死亡玖翅,警方通過查閱死者的電腦和手機(jī)翼馆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來金度,“玉大人应媚,你說我怎么就攤上這事〔录” “怎么了中姜?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長魔吐。 經(jīng)常有香客問我扎筒,道長莱找,這世上最難降的妖魔是什么酬姆? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮奥溺,結(jié)果婚禮上辞色,老公的妹妹穿的比我還像新娘。我一直安慰自己浮定,他們只是感情好相满,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桦卒,像睡著了一般立美。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上方灾,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天建蹄,我揣著相機(jī)與錄音,去河邊找鬼裕偿。 笑死洞慎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘿棘。 我是一名探鬼主播劲腿,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸟妙!你這毒婦竟也來了焦人?” 一聲冷哼從身側(cè)響起挥吵,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垃瞧,沒想到半個(gè)月后蔫劣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡个从,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年脉幢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗦锐。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嫌松,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奕污,到底是詐尸還是另有隱情萎羔,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布碳默,位于F島的核電站贾陷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嘱根。R本人自食惡果不足惜髓废,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望该抒。 院中可真熱鬧慌洪,春花似錦、人聲如沸凑保。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欧引。三九已至频伤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芝此,已是汗流浹背憋肖。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留癌蓖,地道東北人瞬哼。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像租副,于是被迫代替她去往敵國和親坐慰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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

  • 一 Git配置和倉庫初始化 下面會(huì)介紹Git的使用赞咙,每個(gè)小節(jié)里會(huì)講解各個(gè)功能在命令行中的實(shí)現(xiàn)方式,并在每小節(jié)的最后...
    Happioo閱讀 3,333評(píng)論 0 5
  • 來源:Git由淺入深之操作與指令作者:驚鴻三世(轉(zhuǎn)載已獲得原作者許可糟港,如需轉(zhuǎn)載請(qǐng)與原作者聯(lián)系) 本篇正式開始介紹G...
    極樂君閱讀 1,628評(píng)論 9 67
  • Git是目前最流行的版本管理系統(tǒng)攀操,也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,682評(píng)論 1 17
  • 【感動(dòng)】在史丹利公園游逛的時(shí)候(后來發(fā)現(xiàn),不止在這里秸抚,在我們旅行的很多地方都一樣)速和,不時(shí)有人會(huì)停下腳步(甚至是在跑...
    心情旅攝閱讀 405評(píng)論 3 4
  • 作業(yè)1: 記錄一段真實(shí)生活中的人物的語言,或者是兩三個(gè)人物的對(duì)話剥汤。(可以先錄音下來然后逐字打出來) 母:再吃塊魚吧...
    琴寂閱讀 253評(píng)論 1 0