您好,登錄后才能下訂單哦!
本文git為1.9.6版本:
一、git全局配置
二、git初始化本地倉(cāng)庫(kù)
三、git文件狀態(tài)詳解
四、git文件撤銷、恢復(fù)操作
git提交流程層次如下:
git repository 視為線上code集中管理服務(wù)器;也就是我們的code最后的位置;
git staging area 視為我們本地的code集中管理服務(wù)器,可認(rèn)為code的中間的暫留區(qū)(以相對(duì)repository來(lái)說(shuō));
git working directory 視為我們本地編輯的code,也就是代碼編輯處;
1:全局配置
leo@LEO-PC /d/User/leo/Desktop/git (master) $ git config --global user.name "lansgg" leo@LEO-PC /d/User/leo/Desktop/git (master) $ git config --global user.email "coffee_lanshan@sina.com"
這里配置 --global選項(xiàng)其實(shí)就是在修改家目錄下的.getconfig文件
如我的:
C:\Users\leo\.getconfig
內(nèi)容:
[user] name = lansgg email = coffee_lanshan@sina.com [color] ui = true [core] autocrlf = true excludesfile = C:\\Users\\leo\\Documents\\gitignore_global.txt
當(dāng)我們修改此文件,比如將name=test (內(nèi)容已經(jīng)修改)
$ git config --get user.name
這里的用戶名及郵件地址都是在提交代碼的時(shí)候進(jìn)行標(biāo)識(shí)的,顯示提交人的信息;
2:初始化本地git倉(cāng)庫(kù)
本地新建一個(gè)目錄;執(zhí)行g(shù)it init ;
$ mkdir git $ git init
執(zhí)行后的變化就是多了一個(gè).git目錄;
leo@LEO-PC /d/User/leo/Desktop/git (master) $ ls -a .git . COMMIT_EDITMSG config hooks info objects .. HEAD description index logs refs leo@LEO-PC /d/User/leo/Desktop/git (master) $
.git 目錄,其中存放的是我們所提交的文檔索引內(nèi)容,Git 可基于文檔索引內(nèi)容對(duì)其所管理的文檔進(jìn)行內(nèi)容追蹤,從而實(shí)現(xiàn)文檔的版本控制。.git目錄位于工作目錄內(nèi)。
index(索引):將工作目錄下所有文件(包含子目錄)生成快照,存放到一個(gè)臨時(shí)的存儲(chǔ)區(qū)域,Git 稱該區(qū)域?yàn)樗饕?
3、git文件狀態(tài)詳解
3.1、現(xiàn)在新建我們的code;
leo@LEO-PC /d/User/leo/Desktop/git (master) $ touch README.txt leo@LEO-PC /d/User/leo/Desktop/git (master) $ cat hello.rb puts "hello world!"
我們要將he.rb 、README 提交到本地git repository;
3.2、首先查看文件的狀態(tài)
$ git status
或
$ git status -s
根據(jù)輸出信息可以看出,README.txt hello.rb 兩個(gè)文件處于master branch(主分支),這兩個(gè)文件處于未追蹤文件,也就當(dāng)我們執(zhí)行g(shù)it commit(用于提交到圖中的倉(cāng)庫(kù))命令的時(shí)候不會(huì)將他們提交到git repository;
上圖 -s 表示簡(jiǎn)要信息;( ?? )兩個(gè)問號(hào)也有很重要的意義;
第一個(gè) ? 主要表示staging area 和 repository 兩個(gè)區(qū)域間的文件變化,一般會(huì)有兩個(gè)字母來(lái)表示(A、M <綠色>);A 表示此文件已經(jīng)是在追蹤文件,M 表示此文件已經(jīng)在staging area區(qū)域修改,還沒有提交到repository。
第二個(gè) ? 主要表示working directory 和 staging area 兩個(gè)區(qū)域間的文件變化,M <紅色> 表示此文件已經(jīng)working directory區(qū)域修改,還沒有提交到staging area
下面開始演示:git add 表示將文件進(jìn)行追蹤;
$ git add README.txt $ git add hello.rb
再次查看文件狀態(tài)
$ git status -s
可以看到兩個(gè)文件已經(jīng)處于 A 狀態(tài) (追蹤)現(xiàn)在這兩個(gè)文件處于staging area區(qū)域; changes to be committed 可以進(jìn)行提交了;輸出信息提示,可以使用git reset HEAD <file> 將文件恢復(fù)于未追蹤狀態(tài);
恢復(fù)到已經(jīng)追蹤的狀態(tài),進(jìn)行提交測(cè)試;
$ git commit -m "first commit" #-m 表示提交此代碼時(shí)進(jìn)行描述;我們這里描述為“first commit”
可以看到wording directory clean 已經(jīng)將此兩個(gè)文件提交到repository;(從staging area區(qū)域),并查看文件狀態(tài)時(shí),不在輸出任何東西
3.2 修改本地code,再查看文件狀態(tài)
$ echo 'puts "hello world!" '>> hello.rb
$ git status -s
第二個(gè) ? 的地方出現(xiàn)了M <紅色> 表示此文件已經(jīng)在working directory區(qū)域修改;輸出信息提示,hello.rb文件已經(jīng)modified ; 命令 git add && git checkout && git commit -a (圖示都有) 下面講;
如何將此文件提交到repository
$ git add hello.rb $ git commit -m "second commit" hello.rb
或者使用:
$ git commit -a -m "second commit"
此命令將跳過git add 這一步~
4、撤銷、恢復(fù)
4.1、修改本地working directory 的code ;然后撤銷修改,也就說(shuō)從staging area區(qū)域取出此code覆蓋當(dāng)前working directory的code;
測(cè)試如下:
$ echo 'puts "hello world!"' >> hello.rb #修改本地code $ git status -s #查看文件的狀態(tài),有差異 $ git checkout hello.rb #從staging area區(qū)域取出此code $ git status -s #再次查看該文件的狀態(tài),無(wú)差異,并且代碼恢復(fù)到了之前的代碼
4.2、修改本地working directory的code,并且進(jìn)行追蹤(add 到 staging area區(qū)域);然后我們想撤銷本地code的修改,那我們可以從repository倉(cāng)庫(kù)拉出此code覆蓋到staging area,然后再?gòu)膕taging area區(qū)域取出覆蓋到working directory區(qū)域;測(cè)試如下:
$ echo 'puts "hello world!"' >> hello.rb $ git status -s $ git add hello.rb $ git status -s $ git reset hello.rb $ git status -s $ git checkout hello.rb $ git status -s # 每一步都進(jìn)行了文件狀態(tài)差異的核對(duì);
我們也可以不用這么麻煩,可以直接從 repository 區(qū)域拉取出來(lái)直接覆蓋到 working directory 區(qū)域:
$ echo 'puts "hello world!"' >> hello.rb $ git status -s $ git add hello.rb $ git status -s $ git checkout HEAD hello.rb $ git status -s
可以看到已經(jīng)從git repository 拉取此文件并進(jìn)行了覆蓋~
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。