Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

版本控制系統

前言

Godot 的目標是做到 VCS 友好,生成的檔大多可讀、可合併。

版本控制系統

Godot 旨在對 VCS 友善並儘量產生高可讀性與可合併的檔案。Godot 也支援在編輯器中使用版本控制系統。但在編輯器中使用版本控制系統需要安裝對應的外掛。可於 [專案] > [版本控制] 中設定或關閉版本控制系統。

As of October 2025, there is only a Git plugin available, but the community may create additional VCS plugins.

官方 Git 外掛

可以使用官方外掛來在編輯器中使用 Git。可於 此處 取得最新版本 (該外掛不在素材庫中)。關於如何使用 Git 外掛的說明文件可參考 此處 (英文)

有關 Git 外掛的使用說明,可參閱其 Wiki

在版本控制系統中忽略的檔案

備註

這裡列出了 Godot 4.1 及更高版本中應從版本控制中被忽略的檔和資料夾。

Godot 3.x 和 Godot 4.0 中的版本控制應忽略的資料夾檔列表 ** 完全 ** 不同。 這點非常重要,因為 Godot 3.x 和 4.0 可能會將敏感憑據儲存在 export_presets.cfg 中(這與 Godot 4.1 及更高版本不同)。

If you are using Godot 3, check the 3.6 version of this documentation page instead.

當第一次在編輯器中打開專案時,Godot 會自動建立一些檔和資料夾。 為了避免生成的資料使版本控制倉庫膨脹,你應該將它們新增到 VCS 忽略中:

  • . godot/:此資料夾儲存各種專案快取資料。

  • *.translation:這些是從 CSV 檔產生的二進位匯入 翻譯 檔案。

你可以選擇在 Godot 專案管理器建立專案時自動生成版本控制中繼資料。當選擇 Git 選項時,將在專案根目錄中建立 .gitignore.gitattributes 檔案:

在專案管理器的“新建專案”對話方塊中建立版本控制中繼資料

在專案管理器的 新建專案 對話方塊中建立版本控制中繼資料

在現有的專案中,選擇編輯器頂部的 專案 功能表,然後選擇 版本控制 > 生成版本控制中繼資料。這將與在專案管理器中執行的操作一樣建立相同的檔。

在 Windows 上使用 Git

大多數 Windows 上的 Git 用戶端預設會設定 core.autocrlftrue,這會造成 Git 自動將行尾從 LF 轉換為 CRLF,導致檔案被不必要地標記為已修改。

最好將此選項設定為:

git config --global core.autocrlf input

使用專案管理器或編輯器建立版本控制中繼資料時,會使用 .gitattributes 檔自動強制使用 LF 行尾,因此無需更改 Git 配置。

Git LFS

Git LFS(Large File Storage)是 Git 的一個擴充功能,能讓你在版本庫中管理大型檔案。它會在 Git 中以文字指標取代大型檔案本體,並將檔案內容儲存在遠端伺服器上。這有助於管理大型素材,例如貼圖、音訊檔與 3D 模型,同時避免讓 Git 倉庫膨脹。

備註

使用 Git LFS 時,請務必在提交任何檔案到版本庫之前就先完成設定。若你已經提交過檔案,則需要在設定好 Git LFS 之後,將這些檔案自版本庫中移除,並重新加入。

你也可以使用 git lfs migrate 來轉換版本庫中既有的檔案,但這較為進階,並需要對 Git 有充分理解。

常見做法是建立一個啟用 Git LFS(並配置正確 .gitattributes)的新版本庫,然後把舊版本庫的檔案複製到新庫。這樣可以確保一開始所有檔案就由 LFS 追蹤。

要在 Godot 專案中使用 Git LFS,你需要安裝 Git LFS 擴充,並設定要由 LFS 追蹤的檔案類型。可在終端機執行以下指令:

git lfs install

這會在你的版本庫建立 .gitattributes 檔案,告訴 Git 對指定類型使用 LFS。你可以修改 .gitattributes 來加入更多檔案類型。例如,若要追蹤所有 GLB 檔案,可在終端機執行以下指令:

git lfs track "*.glb"

當你新增或修改由 LFS 追蹤的檔案時,Git 會自動將它們存放在 LFS,而不是一般的 Git 歷史中。你可以像一般檔案一樣推送與抓取 LFS 檔案,但請注意 LFS 檔案與其餘 Git 歷史分開儲存。這表示你在任何複製此版本庫的電腦上,都可能需要安裝 Git LFS 才能存取這些檔案。

以下是一個 .gitattributes 範例,可作為 Git LFS 的起點。這些副檔名是常見選擇,但你可以依專案情況調整,納入任意你有的二進位檔類型。

# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

# Git LFS Tracking (Assets)

# 3D Models
*.fbx filter=lfs diff=lfs merge=lfs -text
*.gltf filter=lfs diff=lfs merge=lfs -text
*.glb filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text

# Images
*.png filter=lfs diff=lfs merge=lfs -text
*.svg filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.hdr filter=lfs diff=lfs merge=lfs -text
*.dds filter=lfs diff=lfs merge=lfs -text

# Audio
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text

# Font & Icon
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text

# Godot LFS Specific
*.scn filter=lfs diff=lfs merge=lfs -text
*.res filter=lfs diff=lfs merge=lfs -text
*.material filter=lfs diff=lfs merge=lfs -text
*.anim filter=lfs diff=lfs merge=lfs -text
*.mesh filter=lfs diff=lfs merge=lfs -text
*.lmbake filter=lfs diff=lfs merge=lfs -text

更多 Git LFS 資訊請參閱官方文件:https://git-lfs.github.com/https://docs.github.com/en/repositories/working-with-files/managing-large-files