Git進(jìn)階:工作區(qū)眶掌、暫存區(qū)與版本庫 和 修改冬念、刪除诗祸、撤銷命令 以及一些遇到的bug

參考:
   git 的使用(4)-git暫緩區(qū)工作區(qū)原理和修改刪除等命令
   Git 菜鳥變大神 (三) 工作區(qū)、暫存區(qū)、版本庫之間的關(guān)系案例
需求:
  使用需要

在初始化git版本庫之后會生成一個隱藏的文件 .git 慷吊,可以將該文件理解為git的版本庫 repository,而我們自己建立的項(xiàng)目文件夾即工作區(qū) working directory ,在.git 文件夾里面還有很多文件动遭,其中有一個index 文件 就是暫存區(qū)也可以叫做 stage ,git還為我們自動生成了一個分支master以及指向該分支的指針head.

從圖中可以看出來respository包括分支master和stage, working diretory 可以理解為我們打開開發(fā)環(huán)境如eclipse善茎,里面的內(nèi)容即工作區(qū)的內(nèi)容,在工作區(qū)里面有的代碼以及配置文件等我們需要提交到版本庫里面蚣常,最終是到了分支master上面市咽,暫存區(qū)只是一個臨時(shí)保存修改文件的地方。

一抵蚊、工作區(qū)施绎、暫存區(qū)和版本庫的關(guān)系及區(qū)別

1. 工作區(qū)

工作區(qū)(working Directory),就是我們項(xiàng)目的目錄贞绳,也就是我們例子中的learngit 目錄谷醉,這就是我們所說的工作區(qū),比較簡單冈闭。

2. 版本庫

版本庫(Repository) 俱尼,工作區(qū)有一個隱藏目錄“.git”,如上圖所示萎攒,這個目錄不算工作區(qū)遇八,而是Git的版本庫。我們打開這個.git文件夾耍休,里面有很多文件:

其中最重要的就是稱為stage(或者叫index)的暫存區(qū)刃永,還有Git為我們自動創(chuàng)建的第一個分支master,以及指向master的一個指針叫HEAD羊精。

3. 暫緩區(qū)

我們先來看一張圖斯够,用來區(qū)分工作區(qū)和暫緩區(qū)以及分支的概念:

  • 上圖中,工作區(qū)就是我們的本地目錄,也就是learngit目錄雳刺,stage就是暫緩區(qū)劫灶,master分支就是主分支。
  • 我們先把這三個關(guān)系說一下掖桦,然后我們再具體的例子來說明:
    前面講了我們把文件往git版本庫里添加的時(shí)候本昏,是分兩步執(zhí)行的:
    第一步是用“git add”把文件添加進(jìn)去,實(shí)際上就是把文件修改添加到暫存區(qū)枪汪;
    第二步是用“git commit”提交更改涌穆,實(shí)際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支。
    因?yàn)槲覀儎?chuàng)建git版本庫時(shí)雀久,git自動為我們創(chuàng)建了唯一一個master分支宿稀,所以,現(xiàn)在赖捌,commit就是往master分支上提交更改祝沸。
    你可以簡單理解為,需要提交的文件修改通通放到暫存區(qū)越庇,然后罩锐,一次性提交暫存區(qū)的所有修改。
4.舉個例子

git 的使用(4)-git暫緩區(qū)工作區(qū)原理和修改刪除等命令

5. git跟蹤的是修改

上面很詳細(xì)的說了暫存區(qū)的一些基本的東西卤唉,下面我們通過管理修改的例子涩惑,說學(xué)習(xí)一下為毛git這么快,比其他的版本工具來優(yōu)秀桑驱,因?yàn)間it跟蹤并管理的是修改竭恬,并不是文件。

git 中如何定義修改呢:你新增了一行熬的,這就是一個修改痊硕,刪除了一行,也是一個修改押框,更改了某些字符岔绸,也是一個修改,刪了一些又加了一些强戴,也是一個修改,甚至創(chuàng)建一個新文件挡鞍,也算一個修改骑歹。

SVN中是跟蹤的是這個文件,只要這個文件發(fā)生變化墨微,我們就認(rèn)為是有diff的道媚。但是GIT跟蹤的是修改,一個修改只要沒被add到緩存區(qū),都不算diff最域。

二谴分、撤銷修改

1. 還在工作區(qū)
2. 已經(jīng)add加到暫存區(qū)

三、刪除文件

Git刪除暫存區(qū)或版本庫中的文件 - 推酷

四镀脂、其它

  • 撤銷merge
    $ git reset --hard HEAD
    
  • 沒有共同祖先的兩個分支如何合并牺蹄?合并后會有什么問題?

"git merge" used to allow merging two branches that have no common base by default, which led to a brand new history of an existing project created and then get pulled by an unsuspecting maintainer, which allowed an unnecessary parallel history merged into the existing project. The command has been taught not to allow this by default, with an escape hatch "--allow-unrelated-histories" option to be used in a rare event that merges histories of two projects that started their lives independently.
使用 git merge 合并兩個沒有共同祖先的分支薄翅,這導(dǎo)致了一個創(chuàng)建的現(xiàn)有項(xiàng)目的全新歷史沙兰,然后被一個不知情的維護(hù)者拉出,這使得不必要的并行歷史合并到現(xiàn)有項(xiàng)目中翘魄。 --allow-unrelated-histories 參數(shù)用于將兩個獨(dú)立的分支(即 沒有共同祖先)合并
如果非得將兩個沒有共同祖先的分支合并鼎天,這樣的后果是項(xiàng)目的全部文件都當(dāng)作這次提交的內(nèi)容,而實(shí)際上這次提交的內(nèi)容應(yīng)該就是幾個不同的文件而已暑竟,也就是所有文件都會被認(rèn)為有沖突斋射。

  • merge遠(yuǎn)程分支。

A merge B是把A中的改動放到B分支上但荤,B merge A是把B中的改動merge到A中罗岖,例如把master分支上的改動移到分支fb_xhf上,可以這樣merge纱兑。
1呀闻、轉(zhuǎn)到master分支上,然后更新master最新更新潜慎。
2捡多、再轉(zhuǎn)到fb_xhf上,然后在Local Branches中選擇master分支铐炫,選擇merge垒手,這樣就把本地的master merge到 本地倉庫的fb_xhf上,然后再選擇git push 倒信,這樣就把遠(yuǎn)程master merge到 fb_xhf上, 并會提示: Merged master to fb_xhf科贬。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鳖悠,隨后出現(xiàn)的幾起案子榜掌,更是在濱河造成了極大的恐慌,老刑警劉巖乘综,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憎账,死亡現(xiàn)場離奇詭異,居然都是意外死亡卡辰,警方通過查閱死者的電腦和手機(jī)胞皱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門邪意,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人反砌,你說我怎么就攤上這事雾鬼。” “怎么了宴树?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵策菜,是天一觀的道長。 經(jīng)常有香客問我森渐,道長做入,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任同衣,我火速辦了婚禮竟块,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耐齐。我一直安慰自己浪秘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布埠况。 她就那樣靜靜地躺著耸携,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辕翰。 梳的紋絲不亂的頭發(fā)上夺衍,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機(jī)與錄音喜命,去河邊找鬼沟沙。 笑死,一個胖子當(dāng)著我的面吹牛壁榕,可吹牛的內(nèi)容都是我干的矛紫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼牌里,長吁一口氣:“原來是場噩夢啊……” “哼颊咬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起牡辽,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤喳篇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后态辛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體麸澜,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年因妙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痰憎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡攀涵,死狀恐怖铣耘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情以故,我是刑警寧澤蜗细,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站怒详,受9級特大地震影響炉媒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昆烁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一吊骤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧静尼,春花似錦白粉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拦盹,卻和暖如春鹃祖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背普舆。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工恬口, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奔害。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓楷兽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親华临。 傳聞我的和親對象是個殘疾皇子芯杀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

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

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,661評論 9 163
  • 在中國現(xiàn)有的社會環(huán)境下揭厚,“保姆業(yè)”的服務(wù)水平,還停留在作坊階段扶供,沒有完備的市場秩序筛圆,沒有系統(tǒng)的服務(wù)品質(zhì),更沒有相互...
    姬鯤閱讀 298評論 0 0
  • 我能想到的幸福椿浓,是能伸伸手就能抓到你的手太援,轉(zhuǎn)轉(zhuǎn)臉就能看到你的笑容闽晦。即使不能,也要把青春的時(shí)間提岔,留給身邊還未遠(yuǎn)行的人...
    緩緩歸kang閱讀 247評論 2 1
  • 一些中小型企業(yè)仙蛉,因?yàn)橐?guī)模資源有限,難以招募和保留眾多專業(yè)人才碱蒙,管理者開始思考做中小企業(yè)培訓(xùn)來提升管理荠瘪,但又怕花了人...
    Eggyino閱讀 355評論 0 2
  • 都說成名要趁早,其實(shí)犯渾更要趁早赛惩。 昨晚飯后看了會電視哀墓,一個情感類的咨詢節(jié)目,男女主人公是一對已過而立之年的夫妻喷兼,...
    芒果西柚閱讀 621評論 0 0