《Git學習指南》——2.2 第一個Git項目
本節書摘來自異步社區《Git學習指南》一書中的第2章,第2.2節,作者: 【德】René Preißel(普萊貝爾) , Bjørn Stachmann(斯拉赫曼)著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
2.2 第一個Git項目
在這裏,我們建議你最好能為接下來的Git測試單獨開辟一個項目。總之應先從一個簡單的小項目開始。在我們這個小小的示例項目中,first-steps目錄下隻有兩個文本文件,如圖2.1所示。
圖2.1 我們的示例項目
在開始擺弄這個玩具項目之前,我們建議你最好先做一個備份!盡管在Git中,想要造成永久性的刪除或破壞也不是件容易的事情,而且每當你要做某些“危險”動作的時候,Git通常也會發出相應的警告消息。但是,有備無患總是好的。
2.2.1 創建版本庫
現在,我們首先需要創建一個版本庫,用於存儲該項目本身及其曆史。為此,我們需要在該項目目錄中使用init命令。對於一個帶版本庫的項目目錄,我們通常稱之為工作區。
> cd /projects/first-steps
> git init
Initialized empty Git repository in /projects/first-steps/.git/
init命令會在上述目錄中創建一個名為.git的隱藏目錄,並在其中創建一個版本庫。但請注意,該目錄在Windows資源管理器或Mac Finder中可能是不可見的。
圖2.2 本地版本庫所在的目錄
2.2.2 首次提交
接下來,我們需要將foo.txt和bar.txt這兩個文件添加到版本庫中去。在Git中,我們通常將項目的一個版本稱之為一次提交,但這要分兩個步驟來實現。第一步,我們要先用add命令來確定哪些文件應被包含在下次提交中。第二步,再用commit命令將修改傳送到版本庫中,並賦予該提交一個散列值以便標識這次新提交。在這裏,我們的散列值為2f43cd0,但可能會有所不同,因為該值取決於文件內容。
> git add foo.txt bar.txt
> git commit --message "Sample project imported."
master (root-commit) 2f43cd0] Sample project imported.
2 files changed, 2 insertions(+), 0 deletions(-)
create mode 100644 bar.txt
create mode 100644 foo.txt
2.2.3 檢查狀態
現在,我們來修改一下foo.txt文件的內容,先刪除bar.txt文件,再添加一個名為bar.html的新文件。然後,status命令就會顯示出該項目自上次提交以來所發生的所有修改。請注意,新文件bar.html在這裏被標示成了未跟蹤狀態,這是因為我們還沒有用add命令將其注冊到版本庫。
> git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in
# working directory)
#
# deleted: bar.txt
# modified: foo.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# bar.html
no changes added to commit (use "git add" and/or "git commit -a")
如果我們還想看到更多細節性的內容,也可以通過diff命令來顯示其每個被修改的行。當然。有很多人可能會覺得diff的輸出是個非常難讀的東西。幸運的是,在這一領域,我們有許多工具和開發環境可用,它們可以將這一切顯示得更為清晰(見圖2.3)。
圖2.3 圖形工具(kdiff3)中的Diff報告
> git diff foo.txt
diff --git a/foo.txt b/foo.txt
index 1910281..090387f 100644
--- a/foo.txt
+++ b/foo.txt
@@ -1 +1 @@
-foo
\ No newline at end of file
+foo foo
\ No newline at end of file
2.2.4 提交修改
接下來,所有的修改都必須要先被歸檔成一次新的提交。我們要對修改過的文件和新文件執行add命令,並對要刪除的文件使用rm命令。
> git add foo.txt bar.html
> git rm bar.txt
rm 'bar.txt'
現在再次調用status命令,我們會看到所有的修改已經被納入了下一次提交中。
> git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: bar.html
# deleted: bar.txt
# modified: foo.txt
#
然後用commit命令提交這些修改。
> git commit --message "Some changes."
[master 7ac0f38] Some changes.
3 files changed, 2 insertions(+), 2 deletions(-)
create mode 100644 bar.html
delete mode 100644 bar.txt
2.2.5 顯示曆史
log命令可用來顯示項目的曆史,所有提交都會按時間順序被降序排列出來。
> git log
commit 7ac0f38f575a60940ec93c98de11966d784e9e4f
Author: Rene Preissel <rp@eToSquare.de>
Date: Thu Dec 2 09:52:25 2010 +0100
Some changes.
commit 2f43cd047baadc1b52a8367b7cad2cb63bca05b7
Author: Rene Preissel <rp@eToSquare.de>
Date: Thu Dec 2 09:44:24 2010 +0100
Sample project imported.
最後更新:2017-06-06 07:38:27