天天看點

git版本管理工具的上手

和其他集中式版本管理 工具相比具有以下優點:

1.可以在不聯網的情況下開發

2.可以友善的建立本地分支

3.本地化的日志,快速獲得資訊

mkdir /d/myproject  (在本地d盤下面建立一個名為myproject的本地倉庫)

cd /d/myproject    (切換到該目錄下)

git init  (初始化為主枝)

git add filename  (添加一個檔案的記錄   一次隻能添加一個檔案)

git commit -m "something record"  (送出之前所有添加的檔案的記錄  )

git status  (檢視倉庫内檔案的狀态)

git diff filename  (比較倉庫内某檔案和之前有什麼不同)

git log (輸出最近檔案修改的記錄)

git log --pretty=oneline (單行輸出修改記錄,比較清爽)

git reset --hard 134sdf(hash值) (git下面的回退指令,其中hash值代表的是之前的版本,HEAD^表示上一個版本 HEAD~n 表示之前第n個版本)

git reflog (會把每個版本的hash值列出來,包括已經被復原的版本,用他可以找到已經被我們抛棄的版本的hash值,以便我們重新回到那個版本)

git checkout -- "filename" (恢複該檔案到暫存區裡面的最新版本)

rm "filename" (删除某個檔案)

cat "filename" (列印某個檔案)

------------------------------------------------------------------------------------------------------------------

Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。

先來看名詞解釋。

工作區(Working Directory):就是你在電腦裡能看到的目錄,比如我的learngit檔案夾就是一個工作區:

git版本管理工具的上手

版本庫(Repository):工作區有一個隐藏目錄“.git”,這個不算工作區,而是Git的版本庫。

Git的版本庫裡存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動建立的第一個分支master,以及指向master的一個指針叫HEAD。

git版本管理工具的上手

分支和HEAD的概念我們以後再講。

前面講了我們把檔案往Git版本庫裡添加的時候,是分兩步執行的:

第一步是用“git add”把檔案添加進去,實際上就是把檔案修改添加到暫存區;

第二步是用“git commit”送出更改,實際上就是把暫存區的所有内容送出到目前分支。

因為我們建立Git版本庫時,Git自動為我們建立了唯一一個master分支,是以,現在,commit就是往master分支上送出更改。

你可以簡單了解為,需要送出的檔案修改通通放到暫存區,然後,一次性送出暫存區的所有修改。

俗話說,實踐出真知。現在,我們再練習一遍,先對readme.txt做個修改,比如加上一行内容:

然後,在工作區新增一個LICENSE文本檔案(内容随便寫)。

先用git status檢視一下狀态:

Git非常清楚地告訴我們,readme.txt被修改了,而LICENSE還從來沒有被添加過,是以它的狀态是Untracked。

現在,使用兩次指令git add,把readme.txt和LICENSE都添加後,用git status再檢視一下:

現在,暫存區的狀态就變成這樣了:

git版本管理工具的上手

是以,git add指令實際上就是把要送出的所有修改放到暫存區(Stage),然後,執行git commit就可以一次性把暫存區的所有修改送出到分支。

一旦送出後,如果你又沒有對工作區做任何修改,那麼工作區就是“幹淨”的:

現在版本庫變成了這樣,暫存區就沒有任何内容了:

git版本管理工具的上手

暫存區是Git非常重要的概念,弄明白了暫存區,就弄明白了Git的很多操作到底幹了什麼。

沒弄明白暫存區是怎麼回事的童鞋,請向上滾動頁面,再看一次。

--------------------------------未完待續------------------------------------

繼續閱讀