版本控制的藝術 : Git 基礎篇

更新 發佈閱讀 5 分鐘
Git Logo

Git Logo

  • Git 是什麼 ?

你是否有過這種經驗,同一份文件修改了4、5次,每次都得另存新檔,結果資料夾內堆滿了「最終版」、「最終版 2」、「真正的最終版」這類文件?甚至修改到後面發現方向錯了,或是第 2 版加上某版的修正才是正確的。這時候,你會深刻體會到「版本控制」的重要性。

Git 就是為了解決這些問題而誕生的,作為一種分散式版本控制系統 (Distributed Version Control System, DVCS),它能夠幫你回到任何一個歷史版本,並在多人協作時避免產生混亂。

另一種系統稱為集中式版本控制,附上兩者的差別,有興趣的讀者可以自行前往分散式版本控制 — 維基百科,自由的百科全書

本篇會以稍微程式經驗的角度做介紹,不會有太複雜的說明,以下會從最基本的文件建立開始,一步步帶你了解 Git 的核心概念與常用指令,完整掌握 Git 的使用方法。

若還沒有安裝 Git 套件的話,可以到官網下載

為了方便介紹,以一個簡單的 Python 專案的資料夾為例,逐步說明 Git 的基本操作。假設我們有個初始資料夾,結構如下:

# 初始資料夾
git-project\
git-project\ # 虛擬環境
main.py

輸入指令:

git init

這個步驟會初始化一個新的 Git 倉庫 (Repository),目錄下會生成一個隱藏的.git文件,如果你使用 IDE (例如 VSCode),會發現 main.py顏色發生變化,這表示它正在被 Git 追蹤。

git 追蹤示意

git 追蹤示意

你可能會好奇,為什麼 git-porject會沒被 Git 記錄?這就是下一步要介紹的文件 .gitignore,展開虛擬環境 git-porject會發現它的存在,* 表示忽略所有檔案。

.gitignore

.gitignore

通常,我們會將機密資料 (例如 .env、 config)或是非必要的套件 (例如虛擬環境 venv\)列入 .gitignore,以避免它們被納入版本控制。由於虛擬環境內部的.gitignore紀錄不到外面,所以我們在外部的專案底下再建立一個,並且輸入以下內容,可以發現 git-project 顏色發生變化,這就是被忽略的檔案。

新增 .gitignore

新增 .gitignore

假設程式完成一個段落,想要做一個版本紀錄,輸入指令:

# 添加至暫存區
git add .

然後再輸入:

# 檢查當前狀態
git status

可以看到下列的訊息:

git 當前狀態

git 當前狀態

main.py 與 .gitignore 被標記為「Changes to be committed」,表示目前被存入暫存區 (Staging Area),準備提交到本地倉庫。

接下來執行指令:

# 提交變更
git commit -m "initial commit"

# 檢查提交紀錄
git log

此時可以看到以下的提交紀錄:

git 提交紀錄

git 提交紀錄

更詳細的資訊:

git log --stat
git log --stat

git log --stat

log 紀錄時間、版本 hash 編碼以及作者。 stat可以看到異動過的文件,commit 之後的 hash 編碼它是用來標示唯一提交,未來管理分支、合併以及回朔到某個版本會需要它,下一篇會有更詳細的說明,這邊先不用在意。

commit 結果確認之後,接下來要把程式碼推上遠端倉庫(repository),這邊我們以 GitHub 為例,首先設定 remote URL位置 :

# 列出現有的 remote URL路徑
git remote -v

# 新增 URL路徑至 origin 上
git remote add origin <遠端倉庫的 URL>
倉庫的 URL

倉庫的 URL

新增後再檢查一次 :

git remote -v

git remote -v

確認沒問題後即可推上 GitHub 的倉庫

*這邊有個小細節,GitHub 上預設的分支名稱是 main ,而我們常用的可能是 master ,如果希望名稱對齊可以將先將分支名稱修改後再推送,已經推送的遠端分支也能透過指令刪除 :
# 刪除遠端分支
git push origin --delete master

# 更改分支名稱
git branch -m master main

# 將想要的分支推上 origin
git push origin main

成功推送 :

成功推送

成功推送

遠端倉庫

遠端倉庫

至此,基礎的版本控制就已經完成了,在下一篇『版本控制的藝術:Git 進階篇』中,我們將深入探討分支管理、遠端協作、處理合併衝突以及其他應用。如果內文有任何錯誤,麻煩留言指正我一下,非常感謝!

留言
avatar-img
留言分享你的想法!
avatar-img
Alan的沙龍
0會員
12內容數
不定期技術文章、旅遊、人生見解分享
Alan的沙龍的其他內容
2025/08/09
本篇實現幾種常見的使用模式: 1. Simple 2. Work Queue 3. Publ/Sub 4. Routing 5. Topic
Thumbnail
2025/08/09
本篇實現幾種常見的使用模式: 1. Simple 2. Work Queue 3. Publ/Sub 4. Routing 5. Topic
Thumbnail
2025/08/02
上篇『零基礎入門 RabbitMQ:Producer、Exchange、Queue 和 Consumer 的基本介紹』我們初步認識了 RabbitMQ 的核心部件,本篇我們從安裝到建立 RabbitMQ Server 都會詳細介紹。
Thumbnail
2025/08/02
上篇『零基礎入門 RabbitMQ:Producer、Exchange、Queue 和 Consumer 的基本介紹』我們初步認識了 RabbitMQ 的核心部件,本篇我們從安裝到建立 RabbitMQ Server 都會詳細介紹。
Thumbnail
2025/07/26
RabbitMQ 是一個基於 AMQP 協定的開源訊息佇列應用程式,用於接收、暫存和傳遞訊息。 本文介紹 RabbitMQ 的核心概念,包括 Producer、Exchange、Queue 和 Consumer 的角色和功能。
Thumbnail
2025/07/26
RabbitMQ 是一個基於 AMQP 協定的開源訊息佇列應用程式,用於接收、暫存和傳遞訊息。 本文介紹 RabbitMQ 的核心概念,包括 Producer、Exchange、Queue 和 Consumer 的角色和功能。
Thumbnail
看更多
你可能也想看
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
這篇文章將介紹工程師使用版控和git的相關知識和技能,包括版本控制的意義和git的基本指令,以及開發流程和webhook的概念。
Thumbnail
這篇文章將介紹工程師使用版控和git的相關知識和技能,包括版本控制的意義和git的基本指令,以及開發流程和webhook的概念。
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Thumbnail
前言 上次我們講到 CI/CD 中的 when 使用,今天我們要來傳授一套必殺技,我們要把過去所學的全部融合再一起,相信各位都準備好了,將 Gitlab 從枷鎖中解放出來吧,讓我們來詠唱「武裝完全支配術」 「System Call. Connect Armament. Search Archiv
Thumbnail
前言 上次我們講到 CI/CD 中的 when 使用,今天我們要來傳授一套必殺技,我們要把過去所學的全部融合再一起,相信各位都準備好了,將 Gitlab 從枷鎖中解放出來吧,讓我們來詠唱「武裝完全支配術」 「System Call. Connect Armament. Search Archiv
Thumbnail
前言 今天我們要做一個初體驗,讓各位感受一下,在 GitLab CD/CD 的過程,我們今天使用官方提供的 Gitlab,如果您有自架 Gitlab ,也可以使用自架的 Gitlab 練習,我們這邊為了讓各位學習方便,所以使用官方提供的 Gitlab 作為練習,實際寫一個簡單的 CI/CD 腳本,
Thumbnail
前言 今天我們要做一個初體驗,讓各位感受一下,在 GitLab CD/CD 的過程,我們今天使用官方提供的 Gitlab,如果您有自架 Gitlab ,也可以使用自架的 Gitlab 練習,我們這邊為了讓各位學習方便,所以使用官方提供的 Gitlab 作為練習,實際寫一個簡單的 CI/CD 腳本,
Thumbnail
此篇教學 : 使用GitHub架設免費的部落格網站,輕鬆擁有自己的Blog雛型,記錄生活點滴。
Thumbnail
此篇教學 : 使用GitHub架設免費的部落格網站,輕鬆擁有自己的Blog雛型,記錄生活點滴。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News