今天,從兩個方面來講一講git的倉管。建立倉庫以及跟蹤倉庫里文件的變化。
獲取git倉庫
獲取git倉庫有兩種方法:
-
將本地未初始化的目錄作為倉庫目錄
-
從遠程主機克隆一個已存在的Git項目
下面來演示這兩種方法:
#?mkdir?learngit #?cd?learngit/ #?git?init Initialized?empty?Git?repository?in?/root/learngit/.git
這樣,一個本地的倉庫就建立完了。接下來看如何從遠程克隆倉庫。
#?mkdir?learngit2 #?cd?learngit2 #?git?clone?git@github.com:*****/blog.git??learngit2
該指令表示從遠程克隆Git倉庫,并將目錄修改為learngit2。默認沒有該參數的話,目錄名即為blog。
追蹤倉庫的每一次更新
首先需要講述下文件的狀態,從大的方面來說,文件的狀態有兩種:
-
未跟蹤(Untracked)
-
已跟蹤
已跟蹤的狀態又分為未修改、已修改、已暫存。未跟蹤的文件表示版本庫沒有跟蹤該文件。
下面,我們來演示這幾種文件的狀態。
首先,在項目目錄下新建立一個文件
#?touch?README.md
然后,我們來查看該文件的狀態。git status 可以列出文件的狀態,如果不加文件則表示列出所有的。
#?git?status?README.md? #?On?branch?master # #?Initial?commit # #?Untracked?files: #???(use?"git?add?<file>..."?to?include?in?what?will?be?committed) # #?README.md nothing?added?to?commit?but?untracked?files?present?(use?"git?add"?to?track)</file>
可以看到,README.md狀態是untracked。現在,我們再建立一個文件,并將添加到暫存區,然后看看該文件的狀態。
#?cat?>?index.php??<?php >?phpinfo(); >?eof #?git?add?index.php #?git?status?index.php? #?On?branch?master # #?Initial?commit # #?Changes?to?be?committed: #???(use?"git?rm?--cached?<file>..."?to?unstage) # #?new?file:???index.php #</file>
只要出現在Changes to be committed下面的文件即表示該文件是已暫存狀態。然后,將index.php文件再修改,看看會出現什么情況。
#?git?status?index.php? #?On?branch?master # #?Initial?commit # #?Changes?to?be?committed: #???(use?"git?rm?--cached?<file>..."?to?unstage) # #?new?file:???index.php # #?Changes?not?staged?for?commit: #???(use?"git?add?<file>..."?to?update?what?will?be?committed) #???(use?"git?checkout?--?<file>..."?to?discard?changes?in?working?directory) # #?modified:???index.php #</file></file></file>
看到沒有,index.php文件即出現在了暫存區,也出現在了非暫存區。大家注意了哦!這種情況是經常出現的哦。
git add
該命令的作用有,跟蹤新的文件、將修改的文件提交到暫存區、將合并時候出現沖突的文件標記為已解決的狀態。
查看修改
如何向查看工作區和暫存區文件的修改。直接使用git diff即可。
#?git?diff?1.txt? diff?--git?a/1.txt?b/1.txt index?3b18e51..a042389?100644 ---?a/1.txt +++?b/1.txt @@?-1?+1?@@ -hello?world +hello?world!
那么如何查看暫存區和倉庫的修改的。這個時候需要加上–staged選項。
#?git?diff?--staged?1.txt? diff?--git?a/1.txt?b/1.txt new?file?mode?100644 index?0000000..3b18e51 ---?/dev/null +++?b/1.txt @@?-0,0?+1?@@ +hello?world
總結一下
-
查看工作區和暫存區文件的修改,使用git diff [文件名]
-
查看暫存區和倉庫文件的修改,使用git diff –staged [文件名]
提交更新
我們使用git commit 提交更新,讓暫存區的內容提交到倉庫里。
一般的,我們喜歡用-m選項,將本次提交的更新信息寫在一起。如下:
#?git?commit?-m?'first?commit.add?a?txt?file'
如果你不添加-m選項的話,會跳出一個編輯器,讓你在編輯器里提交更新的信息。如果你更新的內容較多的話,一兩句說不完,那么建議使用該方法。