上一篇
版本庫
版本庫又叫倉庫英文為repository,可以理解為一個(gè)目錄,這個(gè)目錄里的文件被git管理起來,git可以追蹤它的所有的修改。
創(chuàng)建版本庫,初始化版本庫git init
以下所以例子是用msysGit下的Git Bash在Windows進(jìn)行。

1、 mkdir創(chuàng)建目錄,我是在D盤上創(chuàng)建,pwd用于顯示當(dāng)前目錄。當(dāng)前位于D盤下gitDemo目錄。
2、 git init這個(gè)命令是把當(dāng)前目錄初始化為git可以管理的目錄。如果初始化成功,會在當(dāng)前目錄下生成.git目錄也稱git工作樹,對文件的所以操作都會記錄在此工作樹中,使用ls -ah命令可以查看。

查看倉庫的狀態(tài)git status
git status是用于查看git倉庫的狀態(tài),是經(jīng)常使用的命令,倉庫在不斷進(jìn)行操作的過程中,狀態(tài)經(jīng)常變化,因?yàn)榭梢岳趃it status知道當(dāng)前倉庫的狀態(tài)。

解析:
在master分支中,沒有可提交的內(nèi)容。分支概念在后續(xù)中在說,所謂提交(commit)就是指當(dāng)前工作樹或者說工作區(qū)文件的狀態(tài)為無。
此時(shí)創(chuàng)建一個(gè)git.text文件,再用git status查看下狀態(tài)。

解析:
可以看到此時(shí)在Untrached fileds中顯示了 git.txt,指示當(dāng)前狀態(tài)是git.txt沒有被追蹤。
工作區(qū)和暫存區(qū)
工作區(qū)就是可以看到的目錄,例如gitDemo這個(gè)目錄是工作區(qū)。
在前面提到的.git這個(gè)目錄其實(shí)才是版本庫,里面記錄了所以的修改,在.git中有個(gè)暫存區(qū)index或者stage,它是在提交到分支中的一個(gè)臨時(shí)區(qū)域。我們在做所有修改之前都會把工作區(qū)中的修改(或者說每一次操作)放在暫時(shí)區(qū),然后才提交到分支中。

向暫存區(qū)中增加每一次操作(修改)git add

解析:
要想文件成為git倉庫管理的對象,必須使用git add命令將其加入到git暫存區(qū)。在上圖中使用
git add git.txt命令將git.txt加入到了暫存區(qū),然后使用git status查看git的狀態(tài),可以看到在暫存區(qū)有個(gè)新文件 git.txt有待commit(提交)。
向分支中提交暫存區(qū)的內(nèi)容git commit
git commit 可以將暫存區(qū)中文件或者修改保存到分支中即保存了歷史記錄,為了以后的撤銷查看復(fù)原和克隆等。
使用git commit -m "提交信息" -m后面緊跟著是提交信息,方便以后查看此次提交是為了什么,所以這個(gè)提交信息盡可能寫的具體。

解析:
git commit之后就將之前添加到暫存區(qū)的所有內(nèi)容注意所有即不管之前add多少次修改進(jìn)暫存區(qū)中,只有執(zhí)行一次git commit就會一次性將暫存區(qū)中的所有添加到了當(dāng)前分支中,由圖可知當(dāng)前的分支是master(之后再闡述)。此次暫存區(qū)與工作區(qū)應(yīng)該是空的。使用git status查看下。

可以看到nothing to commit。
查看提交日志git log
git log可以查看以往提交的記錄包括是什么人在什么時(shí)候提交以及前后的差別

解析:
commit 右邊提交的版本號用哈希值表示
Author 顯示的是之前設(shè)置用戶的用戶名和郵箱地址
Date 顯示時(shí)間
接下來就是提交的信息
- 可以添加一些參數(shù),查看日志

解析:
$ git log --pretty=oneline只顯示每個(gè)提交的一行信息。
- 顯示文件的改動(dòng)

解析:
$ git log -p git.txt可以顯示這個(gè)文件的前后改動(dòng)。
查看工作區(qū)與暫存區(qū)還有最新提交之前的區(qū)別git diff
- 查看工作區(qū)和暫存區(qū)之間的區(qū)別
先在git.txt中添加內(nèi)容比如hello,添加之后輸入git diff查看
解析:
由于剛剛的修改git.txt的內(nèi)容,未把工作區(qū)添加到暫存區(qū)中,所以程序只顯示工作區(qū)和最新提交的區(qū)別。+表示的是新添加的行,-表示被刪除的行,由上圖可以看到新添加了hello。
把工作區(qū)新的修改添加到暫存區(qū)中再使用git diff查看下區(qū)別。此時(shí)是沒有任何信息的,因?yàn)榇藭r(shí)工作區(qū)和暫存區(qū)的內(nèi)容是一樣了。 - 查看工作區(qū)和最新提交的區(qū)別git diff HEAD
剛剛已經(jīng)把修改的內(nèi)存添加到了暫存區(qū),但是沒有提交到分支中,所以使用git diff HEAD查看下工作區(qū)和最新提交的區(qū)別。

解析:
這里的HEAD是個(gè)指針指向當(dāng)前分支的是最近的一次提交,由圖看到區(qū)別是工作區(qū)多了個(gè)hello??梢栽囋嚢褧捍鎱^(qū)的內(nèi)容提交到分支后,再使用
git diff HEAD查看下工作區(qū)和最新提交的區(qū)別。
