Git 入門:Git 裡的 commit 是什麼?【你的程式時光機】

更新 發佈閱讀 5 分鐘

前一篇文章中,我們學會了版本控制、建立了第一個版本節點,但對於其中細節並沒有特別解釋,你可能也會很想知道:「所以,commit 到底是什麼?」今天這篇文章,我們就來真正理解 commit 的本質​,以及它在 Git 世界中到底有多重要。

如果你還不知道 Git 是什麼,歡迎先去看看我的第一篇 Git 系列文章:

Git 入門:版本控制與 Git 是什麼?【用 Git 打造你的程式時光機 & 平行宇宙】


Git 的三個區域

先回顧 Git 的三個區域:

  • Working Directory (工作目錄):編輯檔案的地方
  • Staging Area (暫存區):存放「準備被記錄的檔案」的地方
  • Repository (儲存庫):存放「被 Git 保存為正式歷史紀錄的版本」的地方

Git 在進行資料處理時,都是基於這三個區域。


Commit 介紹

commit 不是「存檔」,而是「建立一個時間點」

很多人會把 commit 想成是

把修改存起來 (這是錯的!)

但準確的說法是:

commit 是建立一個專案的「快照(snapshot)」。

當執行:

git commit -m "新增登入功能"

Git ​做的事情是把「暫存區」裡的內容拍成一張完整的快照,存進版本歷史。這張快照代表著「這個專案此時的樣子」。

(有點像古早味單機遊戲的存檔點?)


Git 的儲存機制

Git 跟很多傳統版本控制工具(像是 Subversion) 最大的不同就是,Git 每次 commit 都儲存整個專案在那個時間點的「完整快照」,而不是只記「這次改了什麼差異」

你可以把 commit 想像成:

版本1:專案有 A B C  // 拍下完整照片 1
版本2:專案新增​ D // 拍下完整照片 2,裡面有 A、B、C、D
版本3:把 C 改成 E // 拍下完整照片 3,裡面有 A、B、D、E

每一次 commit 都是完整的狀態記錄。雖然每張照片看起來都是完整的,但如果某個檔案內容完全沒變,Git 不會存一份一樣的檔案,而是指向之前存過的那份。所以儲存空間才不會爆炸,操作速度也很快。


commit hash

每一次 commit 都會產生一個 commit hash,這是獨一無二的編號,用來標示這個時間點的專案,類似版本的身分證。

例如:

a3f5e92...

透過 commit hash,你可以:

  • 用它回到某個版本
  • 查看那次做了什麼修改
  • 比較不同版本差異

這也是為什麼 Git 可以當作「程式時光機」!!!


Commit 的特性

每一筆 commit 都會記住他的前一個 commit,被串接起來的 commit 鏈就形成了專案的歷史紀錄。

看起來像是這樣:

()       ()
ABCD // 每個 commit 指向前一筆 commit

commit 不可變

一個 commit 除了檔案內容外,還包含了作者、時間、前一筆 commit ID 等相關資料,因此一旦 commit 完成,它就不會被修改。

如果你改檔案再 commit,Git 不會修改舊的 commit,而是建立一個新的 commit。

commit 內容永遠來自暫存區

有些新手寶寶會下意識改完檔案就想 commit,但是請等一等! commit 前一定要先將變更丟到站存庫呀~

正確流程:

修改工作目錄的檔案 → git add → 暫存區 → git commit → 儲存庫

commit 只會處理暫存區的內容。


總結

總結來說,Git Commit 不只是簡單的存檔,它是專案在特定時空的「快照」。透過獨一無二的 Hash ID不可變的特性,確保程式碼歷史的真實性與穩定性。

了解 commit 的概念是學會 Git 版控最關鍵的一步,因為不論分支(branch)、合併(merge),還是版本回溯(checkout、reset),本質上都是在操作 commit 之間的關係。

在下一篇文章中,我們將正式進入 Git 分支(branch) 的世界,看看 Git 是如何透過 commit 鏈建立「平行宇宙」,讓多人協作與功能開發變得安全又高效!

留言
avatar-img
Elaine 粼粼的林林總總
12會員
40內容數
不定期地分享程式/旅遊/學習/閱讀或各式各樣的文章,如果對我的分享有興趣,歡迎來找我玩~
2026/01/31
這篇文章將會探討 Git 的工作目錄、暫存區和儲存庫三大區域,並解釋檔案在這三個區域中的狀態(未追蹤、已追蹤、已修改、已刪除),以及 git status 指令中常見的訊息。透過理解這三大區域的運作原理,可以幫助開發者更精準、安全地進行版本控制。
2026/01/31
這篇文章將會探討 Git 的工作目錄、暫存區和儲存庫三大區域,並解釋檔案在這三個區域中的狀態(未追蹤、已追蹤、已修改、已刪除),以及 git status 指令中常見的訊息。透過理解這三大區域的運作原理,可以幫助開發者更精準、安全地進行版本控制。
2026/01/28
上一篇文章中,我們已經成功安裝好 Git,在本篇文章中,將會講解 Git 的核心操作,包括初始化儲存庫、查看檔案狀態、添加變更到暫存區,以及保存版本。文章中也簡單提及了 Git 的三個核心區域:工作目錄、暫存區和儲存庫,並解釋了 .gitignore 的用途。
Thumbnail
2026/01/28
上一篇文章中,我們已經成功安裝好 Git,在本篇文章中,將會講解 Git 的核心操作,包括初始化儲存庫、查看檔案狀態、添加變更到暫存區,以及保存版本。文章中也簡單提及了 Git 的三個核心區域:工作目錄、暫存區和儲存庫,並解釋了 .gitignore 的用途。
Thumbnail
2026/01/26
在上一篇文章中,我們已經對於 Git 是什麼、能做什麼有初步的了解了,接下來,可以正式啟航 Git 這架時光機啦! 在這篇文章中,我會帶著大家一起安裝 Git~以及簡單介紹 Git 提供的操作介面。
2026/01/26
在上一篇文章中,我們已經對於 Git 是什麼、能做什麼有初步的了解了,接下來,可以正式啟航 Git 這架時光機啦! 在這篇文章中,我會帶著大家一起安裝 Git~以及簡單介紹 Git 提供的操作介面。
看更多
你可能也想看
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這篇文章將會介紹分支的合併,以及它常見的分類。
Thumbnail
這篇文章將會介紹分支的合併,以及它常見的分類。
Thumbnail
我們在「【開發智能合約 — Solidity系列】開發環境準備」這一個篇章有教學如何結合Remix與Github來儲存我們的程式碼,使用Remix Editor一段時間後,也順利提交Souce Code到Github,但過程中發現一個小問題,就是在Github上的歷程中發現每一次的提交作者都是「Re
Thumbnail
我們在「【開發智能合約 — Solidity系列】開發環境準備」這一個篇章有教學如何結合Remix與Github來儲存我們的程式碼,使用Remix Editor一段時間後,也順利提交Souce Code到Github,但過程中發現一個小問題,就是在Github上的歷程中發現每一次的提交作者都是「Re
Thumbnail
前言   這篇文章將會介紹版本控制,並介紹相關的伺服器和客戶端,藉由比較易懂的方式介紹,可能會跟實際上有些微的落差,但會比較好理解。 版本控制   版本控制基本上是由一個名為 Git 的軟體所建立,隨著時間推進,延伸出了很多伺服器和可視話的客戶端,接下來我會一個一個介紹。 底層 | Git 客戶端
Thumbnail
前言   這篇文章將會介紹版本控制,並介紹相關的伺服器和客戶端,藉由比較易懂的方式介紹,可能會跟實際上有些微的落差,但會比較好理解。 版本控制   版本控制基本上是由一個名為 Git 的軟體所建立,隨著時間推進,延伸出了很多伺服器和可視話的客戶端,接下來我會一個一個介紹。 底層 | Git 客戶端
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
Thumbnail
前言   這篇文章將會介紹伺服器的概覽和倉庫,並介紹兩款客戶端協助使用者。 伺服器 | GitHub   線上軟體原始碼代管服務平台,使用 Git 作為版本控制軟體 GitHub 同時提供付費帳戶和免費帳戶,這兩種帳戶都可以建立公開或私有的代碼倉庫,但付費使用者擁有更多功能。   除了允許個人和組
Thumbnail
前言   這篇文章將會介紹伺服器的概覽和倉庫,並介紹兩款客戶端協助使用者。 伺服器 | GitHub   線上軟體原始碼代管服務平台,使用 Git 作為版本控制軟體 GitHub 同時提供付費帳戶和免費帳戶,這兩種帳戶都可以建立公開或私有的代碼倉庫,但付費使用者擁有更多功能。   除了允許個人和組
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
此教學文章提供逐步指南,說明如何在 GitHub 上創建儲存庫,並使用 Git 進行版本控制,包含單人操作和多人協作,以及分支建立、切換和合併等實例。搭配圖文說明,讓您輕鬆上手 Git 版本控制系統。
Thumbnail
此教學文章提供逐步指南,說明如何在 GitHub 上創建儲存庫,並使用 Git 進行版本控制,包含單人操作和多人協作,以及分支建立、切換和合併等實例。搭配圖文說明,讓您輕鬆上手 Git 版本控制系統。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
前言   這篇文章將會以 SourceTree 作為媒介,講述 Git 中關於伺服器資料儲存狀態的介紹,並介紹如何建立分支與應用。 資料上傳 | Data Commit   版本控制最簡單的介紹,其實就是把專案的資料上傳雲端,然後進行不同版本的分類,當有需要抓回某一個功能進行展演或比對時,可以從這雲
Thumbnail
前言   這篇文章將會以 SourceTree 作為媒介,講述 Git 中關於伺服器資料儲存狀態的介紹,並介紹如何建立分支與應用。 資料上傳 | Data Commit   版本控制最簡單的介紹,其實就是把專案的資料上傳雲端,然後進行不同版本的分類,當有需要抓回某一個功能進行展演或比對時,可以從這雲
Thumbnail
步驟 一般在 git 預設 commit 訊息編輯器會是 vim ,但是如果不習慣使用 vim 命令列,且有安裝 visual studio code 的環境下,可以使用以下命令將 commit 訊息編輯器改為 visual studio code : git config --global c
Thumbnail
步驟 一般在 git 預設 commit 訊息編輯器會是 vim ,但是如果不習慣使用 vim 命令列,且有安裝 visual studio code 的環境下,可以使用以下命令將 commit 訊息編輯器改為 visual studio code : git config --global c
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News