Skip to main content

Git 基礎教學

本篇文件為原預計要在教學現場教大家,因受 COVID-19 疫情影響改為用影片教學。

因為是影片,所以可以在任何你想要的地方暫停,然後做操作。

可搭配影片: https://youtu.be/o0TCXuTfIO8

新影片(202208):https://youtu.be/Ak3w2cOS6rM

Git 簡介

Git 為目前世界上最常用的版本控制系統,通常用在資訊團隊的專案管理上,或是版本控制、合作等。

  • 有了 Git 就不用複製舊版本備份,再更改新版本的情況。
  • 分支系統,讓專案有平行時空,修改起來方便容易。
  • 每個團隊有不同的使用方式,不用太過鑽研,以團隊使用習慣為主。

0. Git 安裝教學

官網 : https://git-scm.com/

下載及安裝

選擇 Download > 選 Windows 就會直接下載了。

Git 安裝請注意以下選項要選第二個

git-install-1

其他請選擇 Next 即可。

檢查安裝

請打開命令提示字元

輸入 git --version

您應該會看到類似以下文字,就是安裝成功囉!

 git version 2.31.1.windows.1 

設定使用者資訊

請在命令提示字元內輸入以下資訊

git config --global user.name "您的英文姓名"
git config --global user.email "您的 Email"

註: 以上設定只需要一次即可,之後不用每個專案都設定。

1. Repository 儲存庫

Repository 為一個儲存單位,通常會是一個資料夾。

Git 一次會追蹤一個 Repository 內的所有變化。

Repository 分為以下兩種

  1. Local Repository : 本地儲存庫,在目前這台電腦上的 儲存庫。
  2. Remote Repository : 遠端儲存庫,通常會在 GitHub, GitLab, Bitbucket ... 等。 通常與人合作會儲存在遠端,要修改專案時就拉下來,然後改完再傳上去。

再目前階段,我們要先學會本地儲存庫(Local Repository),之後會再第二個影片說明遠端儲存庫。

2. 初始化 Git

告知 Git 我們要追蹤目前資料夾所有的檔案,請打開 cmd 輸入下列指令:

git init

若初始化成功,你會發現資料夾內多了一個影藏資料夾 .git,git 會把追蹤到的變化存在裡面。

3. 認識 stage 和 commit

  • commit 是指在 git 上記錄該時間點專案的內容,會留下時間與一段文字(文字自行輸入)。
  • stage 是指在 commit 以前放在一個暫存區,等待確認 commit。

3-1. 檢查 status

status 表示目前檔案狀態,若有偵測到檔案新增、修改、或刪除,會是紅色狀態。 若把這些檔案加到 stage 狀態,則會變綠色呈現。

語法 :

git status

3-2. 把檔案加到 stage 狀態

把檔案加到 stage 狀態的語法:

git add <檔案名稱>

e.g.1.

git add index.jsp

可以加多個(例如加三個):

git add index.jsp ShoppingController.java Cart.java

通常會全部都加入 stage 並等待 commit,則可使用一個點:

git add .

3-3. 產生 commit

commit 是指在 git 上記錄該時間點專案的內容,會留下時間與一段留言(文字自行輸入)。 並會把剛剛加到 stage 的檔案,加入紀錄點(一個時間),紀錄專案更動歷史。

git commit -m "留言"

註: 留言請盡量說明這次更動的意義,例如: 修正購物車 bug,增加付款功能等

commit 成功後,該專案在該時間點的檔案狀態會被記錄起來。

3-4. commit 的歷史紀錄

用以下指令可以查看 commit 的歷史紀錄

git log

git log 會顯示近期的每一筆 commit ,按 q 可以回到命令列

用以下指令可以讓專案回到您想要的 commit 點

git checkout <commit hash>

註: 上面的 <> 不用打

4. 分支 (Branches)

分支可以讓專案產生一個平行時空,兩個不同的分支,不互相影響。

預設是有一支原始分支,通常該分支稱為 master 或 main。

git-branch-img

4.1 創建分支

tip

建議養成一種習慣: 要改動專案以前,先創建新分支。

以下指令可以創建新分支:

git branch <分支名稱>

4.2 切換分支

以下指令可以從目前分支的 commit 點切換出新分支

git checkout <分支名稱>

以下指令可以在新增分支時馬上切換分支

只要加上 -b 的 flag 就可以囉

git checkout -b <分支名稱>

想回到 master

想回到 master 可使用以下指令:

git checkout master

列出所有分支

列出所有分支可使用以下指令:

git branch

合併分支

合併可使用以下指令:

先切換到 master 後,把其他分支合併到 master

git merge <branch-name>

5. Sourcetree 的操作

Sourcetree 為一個 git 的 GUI 圖形介面,可讓使用者方便操作 git。

5-1. Sourcetree 安裝

安裝須注意

  1. Skip

sourcetree-skip

  1. 取消打勾 Mercurail

sourcetree-mercurail

  1. 其他就選 Next 就可以囉!

5-2 專案開啟選項

開啟選項有三個,如下圖

sourcetree-openfile

  • clone : 從網路下載,且開啟 Source tree 介面
  • add : 匯入已經有 Git 追蹤的專案,且開啟 Source tree 介面
  • create : 把專案加上 Git 追蹤,且開啟 Source tree 介面

5-3 檔案狀態管理

sourcetree-filestatus

5-3-1 File Status 區域

  • Staged Files : 已經加入到 Stage 狀態準備 Commit 的檔案
  • Unstaged Files : git 系統偵測到有變化的檔案,按 + 可將檔案加入 Stage 狀態

註 : 在 Unstaged 狀態的檔案可以按右鍵 > Discard ,將該檔案回復到原本的樣子,類似後悔更變。

  • 下方為 Commit 區域,可直接填入 Commit 內容後按右下角 Commit,即可完成 Commit

5-3-2 Branches 區域

Branches 區域為切換分支及合併分支的地方

sourcetree-branches

  • 新增分支在上面功能列的 Branch 按鈕
  • 有小圓圈的分支表示目前所在分支
  • 點兩下就可以切換到該分支

註 : 切換分支前,目前分支必須是要在已經有 Commit 的狀態,或是檔案還未更變的狀態。

  • 合併分支 : 先切換到主要分支,按其他想要合併過來的分支右鍵 > Merge XXX Into Current Branch

6. gitignore

.gitignore 是一個檔案,他可以設定讓 git 不去追蹤該檔案。

Java 專案通常會有以下設定

參考 spring 官方建議的

(以下連結有修正,請注意一下~)

spring ignore

7. Sourcetree + eclipse

  1. 專案右鍵 > Show In > System Explorer > 到專案根目錄 > 複製路徑
  2. 回到 Sourcetree > + 一個 tab > Create

註: 如果本來資料夾內就有 Git 追蹤,不選擇 Create,而要選擇 Add

註: GitHub 教學請見下一篇