免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
git學(xué)習(xí)小計(jì)(二):常用命令、index暫存區(qū)

這篇博文大量引用了如下地址的內(nèi)容:

http://www.worldhello.net/2010/11/30/2166.html
http://gitbook.liuhui998.com/index.html


git常用命令總結(jié):

1、別名
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch
當(dāng)然別名還可以包含命令參數(shù),例如:
git config --global alias.ci "commit -s",這樣當(dāng)執(zhí)行g(shù)it ci時(shí),會(huì)自動(dòng)帶上-s參數(shù),這樣會(huì)在提交說明中自動(dòng)添加上包含提交者姓名和郵件地址的簽名標(biāo)識(shí)。


2、查看日志記錄
git log :顯示所有的提交(commit)日志
git log --stat : 顯示每次提交的文件變更統(tǒng)計(jì),即在每個(gè)提交(commit)中哪些文件被修改了, 這些文件分別添加或刪除了多少行內(nèi)容.

git log --pretty :格式化日志輸出,'--pretty'參數(shù)可以使用若干表現(xiàn)格式,如'oneline'、'short'。git log --pretty=oneline,還有很多其他參數(shù),具體見help。也可以用'--reverse'參數(shù)來逆向顯示所有日志。 

git log --graph --oneline : 顯示簡(jiǎn)短的commit的SHA1 與注釋


git log -p : 顯示補(bǔ)丁patchs

從別處找來的修改log信息展示顏色的參數(shù):

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'--abbrev-commit --


3、git status : 查看文件狀態(tài)
git status -s : 查看精簡(jiǎn)格式的文件狀態(tài)


4、git branch

顯示所有分支,其中分支前有*號(hào)的為當(dāng)前工作分支


5、git rev-parse :可用于顯示引用對(duì)應(yīng)的commit ID

  1. $ git rev-parse head  
  2. fd17e47179d15dc0ac9ed0b2939c780fe7664339  
  3. $ git rev-parse bfb56  
  4. bfb56e4420f21008aef2bc7e8e4f25e23bf8e198  


6、git add :很多版本控件系統(tǒng)都提供了一個(gè)"add"命令,一般是用作向版本庫中添加新文件,git add不但是用來向版本庫中添加新文件(即從untracked變成tracked,加入追蹤),還可以添加已經(jīng)在版本控制中但是剛修改過的文件,在這兩種情況下,git都會(huì)獲得當(dāng)前文件的快照并且把內(nèi)容stage暫存到index中,為下次的commit做好準(zhǔn)備。

具體的操作有如下:

  1. git add file1 file2 file3 <span style="font-family: Arial, Helvetica, sans-serif;">:將file1、file2、file3添加到index中;</span>  

  1. git add . :將修改過的全部文件添加到index中;  
  1. git add -i<span style="font-family: Arial, Helvetica, sans-serif;"> :  交互式添加,git會(huì)列出所有修改過的文件及他們的狀態(tài)。 </span>  

  1.   

  1. git add -u : 將所有被版本庫跟蹤的文件的變更(修改、刪除)添加到暫存區(qū)中。  
  2. git add -a : 將工作區(qū)中的所有改動(dòng)及新增文件添加到暫存區(qū)中。  


7、接下來先介紹下index(或者稱stage、暫存區(qū)、索引區(qū))的概念,然后再分析git diff的用法。

暫存區(qū)是git最重要的概念之一,當(dāng)然它也不是很好理解,一但理解后,很多git的命令就不在那么神秘了。

在版本庫(.git)目錄下,有一個(gè) index 文件,我們針對(duì)這個(gè)文件做一個(gè)有趣的試驗(yàn)。 首先我們執(zhí)行 "git checkout" 命令撤銷工作區(qū)中 welcome.txt文件尚未提交的修改。

$ git checkout -- welcome.txt
$ git status -s
我們通過狀態(tài)輸出,看以看到工作區(qū)已經(jīng)沒有改動(dòng)了。我們查看一下 .git/index 文件,注意該文件的時(shí)間戳(19:37:44):
$ ls --full-time .git/index
-rw-r--r-- 1 jiangxin jiangxin 112 2010-11-29 19:37:44.625246224 +0800 .git/index
我們?cè)俅螆?zhí)行 "git status" 命令,然后顯示 .git/index 文件的時(shí)間戳(19:37:44),和上面的一樣。
$ git status -s
$ ls --full-time .git/index
-rw-r--r-- 1 jiangxin jiangxin 112 2010-11-29 19:37:44.625246224 +0800 .git/index
現(xiàn)在我們更改一下 welcome.txt 的時(shí)間戳,但是不改變它的內(nèi)容。然后再執(zhí)行 "git status" 命令,然后查看 .git/index文件時(shí)間戳(19:42:06)。
$ touch welcome.txt
$ git status -s
$ ls --full-time .git/index
-rw-r--r-- 1 jiangxin jiangxin 112 2010-11-29 19:42:06.980243216 +0800 .git/index
看到了么,時(shí)間戳改變了! 這個(gè)試驗(yàn)說明當(dāng)執(zhí)行 "git status" 命令掃描工作區(qū)改動(dòng)的時(shí)候,先依據(jù) .git/index 文件中記錄的(工作區(qū)跟蹤文件的)時(shí)間戳、長度等信息判斷工作區(qū)文件是否改變。如果工作區(qū)的文件時(shí)間戳改變,說明文件的內(nèi)容 可能 被改變了,需要要打開文件,讀取文件內(nèi)容,和更改前的原始文件相比較,判斷文件內(nèi)容是否被更改。如果文件內(nèi)容沒有改變,則將該文件新的時(shí)間戳記錄到 .git/index 文件中。因?yàn)榕袛辔募欠窀?,使用時(shí)間戳、文件長度等信息進(jìn)行比較要比通過文件內(nèi)容比較要快的多,所以 Git 這樣的實(shí)現(xiàn)方式可以讓工作區(qū)狀態(tài)掃描更快速的執(zhí)行,這也是 Git 高效的因素之一。

文件 .git/index 實(shí)際上就是一個(gè)包含文件索引的目錄樹,像是一個(gè)虛擬的工作區(qū)。在這個(gè)虛擬工作區(qū)的目錄樹中,記錄了文件名、文件的狀態(tài)信息(時(shí)間戳、文件長度等),文件的 內(nèi)容并不存儲(chǔ)其中,而是保存在 Git 對(duì)象庫(.git/objects)中,文件索引建立了文件和對(duì)象庫中對(duì)象實(shí)體之間的對(duì)應(yīng)。下面這個(gè)圖展示了工作區(qū)、版本庫中的暫存區(qū)和版本庫之間的關(guān) 系。

工作區(qū)、版本庫、暫存區(qū)原理圖

在這個(gè)圖中,我們可以看到部分 Git 命令是如何影響工作區(qū)和暫存區(qū)(stage, index)的。
  • 圖中左側(cè)為工作區(qū),右側(cè)為版本庫。在版本庫中標(biāo)記為 "index" 的區(qū)域是暫存區(qū)(stage, index),標(biāo)記為 "master" 的是 master 分支所代表的目錄樹。
  • 圖中我們可以看出此時(shí) "HEAD" 實(shí)際是指向 master 分支的一個(gè)“游標(biāo)”。所以圖示的命令中出現(xiàn) HEAD 的地方可以用 master 來替換。
  • 圖中的 objects 標(biāo)識(shí)的區(qū)域?yàn)?Git 的對(duì)象庫,實(shí)際位于 ".git/objects" 目錄下,我們會(huì)在后面的章節(jié)重點(diǎn)介紹。
  • 當(dāng)對(duì)工作區(qū)修改(或新增)的文件執(zhí)行 "git add" 命令時(shí),暫存區(qū)的目錄樹被更新,同時(shí)工作區(qū)修改(或新增)的文件內(nèi)容被寫入到對(duì)象庫中的一個(gè)新的對(duì)象中,而該對(duì)象的ID 被記錄在暫存區(qū)的文件索引中。
  • 當(dāng)執(zhí)行提交操作(git commit)時(shí),暫存區(qū)的目錄樹寫到版本庫(對(duì)象庫)中,master 分支會(huì)做相應(yīng)的更新。即 master 指向的目錄樹就是提交時(shí)暫存區(qū)的目錄樹。
  • 當(dāng)執(zhí)行 "git reset HEAD" 命令時(shí),暫存區(qū)的目錄樹會(huì)被重寫,被 master 分支指向的目錄樹所替換,但是工作區(qū)不受影響。
  • 當(dāng)執(zhí)行 "git rm --cached <file>" 命令時(shí),會(huì)直接從暫存區(qū)刪除文件,工作區(qū)則不做出改變。
  • 當(dāng)執(zhí)行 "git checkout ." 或者 "git checkout -- <file>" 命令時(shí),會(huì)用暫存區(qū)全部或指定的文件替換工作區(qū)的文件。這個(gè)操作很危險(xiǎn),會(huì)清除工作區(qū)中未添加到暫存區(qū)的改動(dòng)。
  • 當(dāng)執(zhí)行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令時(shí),會(huì)用 HEAD 指向的 master 分支中的全部或者部分文件替換暫存區(qū)和以及工作區(qū)中的文件。這個(gè)命令也是極具危險(xiǎn)性的,因?yàn)椴坏珪?huì)清除工作區(qū)中未提交的改動(dòng),也會(huì)清除暫存區(qū)中未提交的改動(dòng)。

8、恢復(fù)刪除的文件

  1. git cat-file -p head~1:test.java > test.java  
  2. git show head~1:test.java > test.java  
  3. git checkout head~1 -- test.java  
這三種方法都可以通過上次的提交點(diǎn)來恢復(fù)刪除的文件

9、修改文件名(或者移動(dòng)文件)

  1. git mv a.java b.java : 將a.java改名為b.java  
git 修改文件名實(shí)際上是執(zhí)行的git rm和git add兩條命令
  1. git mv a.java .. : 將a.java移動(dòng)到父目錄中  



本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
關(guān)于Git原理介紹和常用操作總結(jié)
git干貨系列:(二)深入學(xué)習(xí)之前先理解git暫存區(qū) | 嘟嘟獨(dú)立博客
Git本地倉庫(Repository)詳解
Git常用命令速查表(收藏大全)
GIT的Push和Pull,強(qiáng)制Pull覆蓋本地命令
Android拓展系列(2)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服