---
date: "2021-09-02T16:00:00+08:00"

slug: "upgrade-from-gitea"
sidebar_position: 100

---

# 從舊版 Gitea 升級

在升級之前，您需要做如下的準備工作。

## 為重大變更檢查更新日誌

為了讓 Gitea 變得更好，進行重大變更是不可避免的，尤其是一些里程碑更新的發佈。
在更新前，請 [在 Gitea 部落格上閱讀更新日誌](https://blog.gitea.com/)
並檢查重大變更是否會影響你的 Gitea 實例。

## 在控制面板中檢查過期的設定項

一些設定項可能會在後續版本中過期，你需要在控制面板中檢查他們。如果不解決過期的設定項，
Gitea也許會在升級後無法重啟。你可以訪問 https://docs.gitea.com 獲得要升級的版本
對應的文件來修改你的設定文件。

## 降級前的備份

Gitea 會保留首二位版本號相同的版本的相容性 (`a.b.x` -> `a.b.y`)，
這些版本擁有相同的資料庫結構，可以自由升級或降級。
其他情況 (`a.b.?` -> `a.c.?`)下，
新版 Gitea 可能將會將資料庫升級到與舊版資料庫不同的結構。

舉個例子:

| 當前 | 目標 | 結果 |
| --- | --- | --- |
| 1.4.0 | 1.4.1 | ✅ |
| 1.4.1 | 1.4.0 | ⚠️ 不建議，後果自負！儘管資料庫結構可能不會變更，讓它可以正常工作。我們強烈建議降級前進行完全的備份。 |
| 1.4.x | 1.5.y | ✅ 資料庫會被自動升級。你可以直接從 1.4.x 升級到最新的 1.5.y。 |
| 1.5.y | 1.4.x | ❌ 資料庫已被升級且無法用於舊版本Gitea，使用備份來進行降級。 |

**因為你不能基於升級後的資料庫運行舊版 Gitea，所以你應該在資料庫升級前完成資料備份。**

如果你在生產環境下使用 Gitea，你應該在升級前做好備份，哪怕只是小版本的補丁更新。

備份步驟:

* 停止 Gitea 實例
* 備份資料庫
* 備份 Gitea 設定文件
* 備份 Gitea 在 `APP_DATA_PATH` 中的資料文件
* 備份 Gitea 的外部儲存 (例如: S3/MinIO 或被使用的其他儲存)

如果你在使用雲服務或擁有快照功能的文件系統，
最好對 Gitea 的資料盤及相關資料儲存進行一次快照。

在所有上述步驟準備妥當之後，要升級 Gitea，只需要下載新版，停止運行舊版，進行資料備份，然後運行新版就好。
每次 Gitea 實例啟動時，它都會檢查是否要進行資料庫遷移。
如果需要進行資料庫遷移，Gitea 會花一些時間完成升級然後繼續服務。

## 從 Docker 升級

* `docker pull` 拉取 Gitea 的最新發布版。
* 停止運行中的實例，備份資料。
* 使用 `docker` 或 `docker-compose` 啟動較新的 Gitea Docker 容器.

## 從包升級

* 停止運行中的實例，備份資料。
* 使用你的套件管理器更新 Gitea 到最新版本。
* 啟動 Gitea 實例。

## 從二進制升級

* 下載最新的 Gitea 二進制文件到臨時文件夾中。
* 停止運行中的實例，備份資料。
* 將舊的 Gitea 二進制文件覆蓋成新的。
* 啟動 Gitea 實例。

在 Linux 系統上自動執行以上步驟的腳本可在 [Gitea 的 source tree 中找到 `contrib/upgrade.sh` 來獲取](https://github.com/go-gitea/gitea/blob/main/contrib/upgrade.sh).

## 小心你的自訂模板

Gitea 的模板結構與變量可能會隨著各個版本的發佈發生變化，如果你使用了自訂模板，
你得注意你的模板與你使用的 Gitea 版本的相容性。

如果自訂模板與 Gitea 版本不相容，你可能會遇到：
`50x` 伺服器錯誤，頁面元素丟失或故障，莫名其妙的頁面佈局，等等…
移除或更新不相容的模板，Gitea Web 纔可以正常工作。
