Git 教程 - 初始化本地倉庫

Jinku Hu 2022年2月6日 2018年7月19日
Git 教程 - 初始化本地倉庫

我們將在本教程中建立我們的第一個 git 專案。

你可以在 C 盤建立一個資料夾 Git,但此 C:\Git 資料夾絕對不是必需的步驟,只是我個人習慣將所有的本地倉庫該資料夾中。

然後,我們在 C:\Git 資料夾中建立一個 GitLearn 新資料夾,這將是我們在本教程中演示用的專案資料夾。

我們可以用 git init 在這個資料夾初始化空的 git 倉庫,

$ git init 

然後我們在 git bash 中會看到成功的初始化確認資訊。

$ git init
Initialized empty Git repository in C:/Git/GitLearn/.git/

git status

在我們開始在倉庫中新增檔案之前,我們可以用 git status 來獲取倉庫的當前狀態。

$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

的確,倉庫仍然是空的,它還沒有任何的提交。

那麼我們可以在這個資料夾中新增一些檔案,比如新建一個 test1.txt 檔案並且把下面的內容加入到檔案中,

This is my first Git repository.

如果再次用 git status 檢查,將會得到

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	test1.txt

nothing added to commit but untracked files present (use "git add" to track)

新檔案顯示在未跟蹤檔案列表中的狀態資訊中。如果我們不新增和提交它們,Git 就不會跟蹤未跟蹤的檔案。

我們首先需要使用 git add 命令將它們新增到 staging 區域,也就是暫存區。

git add test1.txt

現在,再次用 git status 來查詢最新的工作區狀態。

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   test1.txt

新增的檔案現在位於暫存區中並等待提交。你現在可以應該使用 git commit 命令將新的在暫存區的檔案 test1.txt 提交到倉庫中。

$ git commit -m "the first commit. add test1.txt to the repository"
[master (root-commit) 15322c9] the first commit. add test1.txt to the repository
 1 file changed, 1 insertion(+)
 create mode 100644 test1.txt

這時如果你檢查工作區的狀態,將會看到乾淨的工作樹資訊,沒有檔案有變化或未被跟蹤。

$ git status
On branch master
nothing to commit, working tree clean

如果你要獲取提交歷史記錄的日誌記錄資訊,可以使用 git log 來檢索已經提交的日誌。

$ git log
commit 15322c93a528af85dbba478a77b93cb6477698cb
Author: Your Name <yourname@email.com>
Date:   Wed Jul 25 00:14:49 2018 +0200

    the first commit. add test1.txt to the repository
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn