git工作原理-工作目錄(Working Directory)碾局、暫存區(qū)(Stage/Index)、資源庫(kù)(Repository或Git Directory)奴艾、git倉(cāng)庫(kù)(Remote Direc...

轉(zhuǎn)自:https://www.cnblogs.com/qdhxhz/p/9757390.html

一净当、概念

? ?1、四個(gè)工作區(qū)域

Git本地有四個(gè)工作區(qū)域:工作目錄(Working Directory)蕴潦、暫存區(qū)(Stage/Index)像啼、資源庫(kù)(Repository或Git Directory)、git倉(cāng)庫(kù)(Remote Directory)潭苞。文件在這四個(gè)區(qū)域之間的轉(zhuǎn)換關(guān)系如下:

?Workspace: 工作區(qū)忽冻,就是你平時(shí)存放項(xiàng)目代碼的地方

Index / Stage: 暫存區(qū),用于臨時(shí)存放你的改動(dòng)此疹,事實(shí)上它只是一個(gè)文件僧诚,保存即將提交到文件列表信息

?Repository: 倉(cāng)庫(kù)區(qū)(或版本庫(kù)),就是安全存放數(shù)據(jù)的位置秀菱,這里面有你提交到所有版本的數(shù)據(jù)振诬。其中HEAD指向最新放入倉(cāng)庫(kù)的版本

?Remote: 遠(yuǎn)程倉(cāng)庫(kù),托管代碼的服務(wù)器衍菱,可以簡(jiǎn)單的認(rèn)為是你項(xiàng)目組中的一臺(tái)電腦用于遠(yuǎn)程數(shù)據(jù)交換

? ?2赶么、工作流程

git的工作流程一般是這樣的:

1、在工作目錄中添加脊串、修改文件辫呻;

2、將需要進(jìn)行版本管理的文件放入暫存區(qū)域琼锋;

3放闺、將暫存區(qū)域的文件提交到git倉(cāng)庫(kù)。

因此缕坎,git管理的文件有三種狀態(tài):已修改(modified),已暫存(staged),已提交(committed)

? ?3怖侦、文件的四種狀態(tài)

版本控制就是對(duì)文件的版本控制,要對(duì)文件進(jìn)行修改谜叹、提交等操作匾寝,首先要知道文件當(dāng)前在什么狀態(tài),不然可能會(huì)提交了現(xiàn)在還不想提交的文件荷腊,或者要提交的文件沒(méi)提交上艳悔。

GIT不關(guān)心文件兩個(gè)版本之間的具體差別,而是關(guān)心文件的整體是否有改變女仰,若文件被改變猜年,在添加提交時(shí)就生成文件新版本的快照抡锈,而判斷文件整體是否改變的方法就是用

SHA-1算法計(jì)算文件的校驗(yàn)和。

Untracked:未跟蹤, 此文件在文件夾中, 但并沒(méi)有加入到git庫(kù), 不參與版本控制. 通過(guò)git add 狀態(tài)變?yōu)镾taged.

?Unmodify:文件已經(jīng)入庫(kù), 未修改, 即版本庫(kù)中的文件快照內(nèi)容與文件夾中完全一致. 這種類型的文件有兩種去處, 如果它被修改, 而變?yōu)镸odified.

? ? ? ? ? ? ? ? ? ?如果使用git rm移出版本庫(kù), 則成為Untracked文件

?Modified:?文件已修改, 僅僅是修改, 并沒(méi)有進(jìn)行其他的操作. 這個(gè)文件也有兩個(gè)去處, 通過(guò)git add可進(jìn)入暫存staged狀態(tài), 使用git checkout 則丟棄修改過(guò),

? ? ? ? ? ? ? ? 返回到unmodify狀態(tài), 這個(gè)git checkout即從庫(kù)中取出文件, 覆蓋當(dāng)前修改

?Staged:?暫存狀態(tài). 執(zhí)行g(shù)it commit則將修改同步到庫(kù)中, 這時(shí)庫(kù)中的文件和本地文件又變?yōu)橐恢? 文件為Unmodify狀態(tài). 執(zhí)行g(shù)it reset HEAD filename取消暫存,

? ? ? ? ? ? ? ?文件狀態(tài)為Modified

?下面的圖很好的解釋了這四種狀態(tài)的轉(zhuǎn)變:

新建文件--->Untracked

使用add命令將新建的文件加入到暫存區(qū)--->Staged

使用commit命令將暫存區(qū)的文件提交到本地倉(cāng)庫(kù)--->Unmodified

如果對(duì)Unmodified狀態(tài)的文件進(jìn)行修改---> modified

如果對(duì)Unmodified狀態(tài)的文件進(jìn)行remove操作--->Untracked


二乔外、四個(gè)區(qū)域常用命令

? ?1床三、新建代碼庫(kù)

# 在當(dāng)前目錄新建一個(gè)Git代碼庫(kù) git init# 新建一個(gè)目錄,將其初始化為Git代碼庫(kù)git init [project-name]# 下載一個(gè)項(xiàng)目和它的整個(gè)代碼歷史git clone [url]

? ?2袁稽、查看文件狀態(tài)

#查看指定文件狀態(tài)git status [filename]#查看所有文件狀態(tài)git status

? ? 3勿璃、工作區(qū)<-->暫存區(qū)

# 添加指定文件到暫存區(qū)git add [file1] [file2] ...# 添加指定目錄到暫存區(qū),包括子目錄git add [dir]# 添加當(dāng)前目錄的所有文件到暫存區(qū)git add .#當(dāng)我們需要?jiǎng)h除暫存區(qū)或分支上的文件, 同時(shí)工作區(qū)也不需要這個(gè)文件了, 可以使用(??)git rm file_path#當(dāng)我們需要?jiǎng)h除暫存區(qū)或分支上的文件, 但本地又需要使用, 這個(gè)時(shí)候直接push那邊這個(gè)文件就沒(méi)有推汽,如果push之前重新add那么還是會(huì)有补疑。git rm --cached file_path#直接加文件名? 從暫存區(qū)將文件恢復(fù)到工作區(qū),如果工作區(qū)已經(jīng)有該文件歹撒,則會(huì)選擇覆蓋#加了【分支名】 +文件名? 則表示從分支名為所寫的分支名中拉取文件 并覆蓋工作區(qū)里的文件git checkout

? ? 4莲组、工作區(qū)<-->資源庫(kù)(版本庫(kù))

#將暫存區(qū)-->資源庫(kù)(版本庫(kù))git commit -m '該次提交說(shuō)明'#如果出現(xiàn):將不必要的文件commit 或者 上次提交覺(jué)得是錯(cuò)的? 或者 不想改變暫存區(qū)內(nèi)容,只是想調(diào)整提交的信息#移除不必要的添加到暫存區(qū)的文件git reset HEAD 文件名#去掉上一次的提交(會(huì)直接變成add之前狀態(tài))? git reset HEAD^#去掉上一次的提交(變成add之后暖夭,commit之前狀態(tài)) git reset --soft? HEAD^

? ? 5锹杈、遠(yuǎn)程操作

# 取回遠(yuǎn)程倉(cāng)庫(kù)的變化,并與本地分支合并git pull# 上傳本地指定分支到遠(yuǎn)程倉(cāng)庫(kù)git push

? ?6迈着、其它常用命令

# 顯示當(dāng)前的Git配置git config --list# 編輯Git配置文件git config -e [--global]#初次commit之前竭望,需要配置用戶郵箱及用戶名,使用以下命令:git config --global user.email "you@example.com"

git config --global user.name "Your Name"#調(diào)出Git的幫助文檔git --help#查看某個(gè)具體命令的幫助文檔git +命令 --help#查看git的版本git --version

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末裕菠,一起剝皮案震驚了整個(gè)濱河市咬清,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奴潘,老刑警劉巖旧烧,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異画髓,居然都是意外死亡掘剪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門奈虾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)夺谁,“玉大人,你說(shuō)我怎么就攤上這事肉微∝遗福” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵浪册,是天一觀的道長(zhǎng)扫腺。 經(jīng)常有香客問(wèn)我岗照,道長(zhǎng)村象,這世上最難降的妖魔是什么笆环? 我笑而不...
    開(kāi)封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮厚者,結(jié)果婚禮上躁劣,老公的妹妹穿的比我還像新娘。我一直安慰自己库菲,他們只是感情好账忘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著熙宇,像睡著了一般鳖擒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烫止,一...
    開(kāi)封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天蒋荚,我揣著相機(jī)與錄音,去河邊找鬼馆蠕。 笑死期升,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的互躬。 我是一名探鬼主播播赁,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吼渡!你這毒婦竟也來(lái)了容为?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诞吱,失蹤者是張志新(化名)和其女友劉穎舟奠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體房维,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沼瘫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咙俩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耿戚。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阿趁,靈堂內(nèi)的尸體忽然破棺而出膜蛔,到底是詐尸還是另有隱情,我是刑警寧澤脖阵,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布皂股,位于F島的核電站,受9級(jí)特大地震影響命黔,放射性物質(zhì)發(fā)生泄漏呜呐。R本人自食惡果不足惜就斤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蘑辑。 院中可真熱鬧洋机,春花似錦、人聲如沸洋魂。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)副砍。三九已至衔肢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豁翎,已是汗流浹背膀懈。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谨垃,地道東北人启搂。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像刘陶,于是被迫代替她去往敵國(guó)和親胳赌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 工作區(qū)和暫存區(qū) 工作區(qū) 在我們自己電腦中匙隔,里面有.git文件夾的那個(gè)目錄疑苫,我們一般叫做git工作區(qū),但是請(qǐng)注意.g...
    程序淡然閱讀 277評(píng)論 0 1
  • 一 Git配置和倉(cāng)庫(kù)初始化 下面會(huì)介紹Git的使用,每個(gè)小節(jié)里會(huì)講解各個(gè)功能在命令行中的實(shí)現(xiàn)方式再膳,并在每小節(jié)的最后...
    Happioo閱讀 3,360評(píng)論 0 5
  • 一挺勿、基本概念: 注:對(duì)于git的分布式概念及其優(yōu)點(diǎn),不重復(fù)說(shuō)明喂柒,自己百度或谷歌不瓶。本文中涉及到指令前面有$的,在cm...
    大廠offer閱讀 1,425評(píng)論 0 3
  • Git 是目前最流行的分布式版本控制系統(tǒng)之一灾杰。 版本控制指的是蚊丐,記錄每次版本變更的內(nèi)容和時(shí)間等細(xì)節(jié),保留各版本之間...
    神齊閱讀 1,425評(píng)論 0 7
  • 以下筆記主要參考gitgot艳吠,大致了解git使用和原理麦备。 第一部分我們從個(gè)人的視角去研究如何用好Git,并且揭示G...
    carolwhite閱讀 2,379評(píng)論 0 1