為什麼 clone 下來的檔案不是正確的格式?認識 Git LFS

為什麼 clone 下來的檔案不是正確的格式?認識 Git LFS

目錄

最近遇到同事 git clone 一個專案,發現 clone 下來的壓縮檔居然是文字檔案!但我們在遠端看到的是壓縮檔,為什麼會這樣呢?原來是因為專案使用了 Git LFS,所以在 clone 時,只會 clone 下來指標檔案,而不是實際的大型檔案。這篇文章就來介紹一下 Git LFS。

Git Large File Storage(Git LFS)是一個 Git 擴展,用於改善大型二進制文件的處理。它通過將這些大型文件的實際內容存儲在遠程服務器上,並在 Git 倉庫中放置一個指針文件來實現這一點。這個指針文件是一個小的文本文件,包含了指向實際存儲位置的必要信息。

如果沒有安裝 Git LFS,當你使用 git clone 克隆一個包含 LFS 對象的倉庫時,Git 只會克隆包含指針的文本文件,而不是大型文件的實際內容。這是因為 Git 默認不知道如何處理這些指針文件所指向的大型文件。

這些文本指針文件通常包含以下信息:

  • 版本信息,表明該文件是由 Git LFS 管理的
  • 大型文件的 SHA-256 哈希值,用於唯一標識文件內容
  • 大型文件的大小

例如,一個 Git LFS 指針文件可能看起來像這樣:

version https://git-lfs.github.com/spec/v1
oid sha256:ce013625030ba8dba906f756967f9e9eef7e9b40e4e8b3464285c1a31a2a7a31
size 12345

如果你想要克隆倉庫並獲得大型文件的實際內容,你需要先安裝 Git LFS。一旦安裝並設置好,當你克隆倉庫或拉取更新時,Git LFS 會自動替換這些指針文件為對應的大型文件。

以下是添加 Git LFS 到你的 Git 倉庫的流程:

安裝 Git LFS

首先,你需要在你的機器上安裝 Git LFS。這可以通過不同的方式完成,取決於你的操作系統。

對於 Windows,你可以使用 Chocolatey

choco install git-lfs -y

對於 macOS,你可以使用 Homebrew

brew install git-lfs

對於 Ubuntu/Debian:

sudo apt-get install git-lfs -y

初始化 Git LFS

安裝完 Git LFS 之後,你需要在你想要使用它的倉庫中初始化它。這可以通過執行以下命令完成:

git lfs install

選擇要追蹤的文件類型

接下來,你需要指定哪些文件類型應該由 Git LFS 處理。這是通過使用 git lfs track 命令來完成的。例如,如果你想要追蹤所有 .zip 文件,你可以執行:

git lfs track "*.zip"

這將會更新 .gitattributes 文件,將指定的文件模式添加到其中。

添加文件並提交

將文件添加到你的倉庫中,就像你通常使用 Git 一樣:

git add file.zip
git commit -m "Add large file"

推送到遠端倉庫

最後,當你推送到遠端倉庫時,Git LFS 將會自動處理大文件的上傳。

git push origin main

請注意,當你克隆或拉取使用 Git LFS 的倉庫時,你可能需要使用特殊的命令來拉取大文件:

git lfs pull
標籤 :
comments powered by Disqus

相關文章

Powershell 環境變數設定:自動化您的 Windows 設定

Powershell 環境變數設定:自動化您的 Windows 設定

在 Windows 中,手動設定環境變數通常需要通過系統的進階系統設定來進行,這個過程可能比較繁瑣。幸運的是,我們可以利用 Powershell 來實現自動化的環境變數設定。在本

閱讀更多
如何快速建置 Node.js 專案並使用 TypeScript 與 Visual Studio Code 進行開發

如何快速建置 Node.js 專案並使用 TypeScript 與 Visual Studio Code 進行開發

安裝 .NET CLI on Windows with Chocolatey choco install dotnetcore-sdk -y on macOS with Homebrew brew install dotnet-sdk on Ubuntu sudo apt-get install dotnet-sdk -y 使用 Will 保哥 的專案範本建立一個新的 TypeScript 專案 安裝專案範本 dotnet new --install Duotify.Templates.DotNetNew 建立新的 TypeScript 專案 mkdir <project-folder> && cd <project-folder> dotnet new tsnode

閱讀更多
小米直立風冷無線充電座 50W

小米直立風冷無線充電座 50W

今天我要帶大家一探小米的新科技 - 小米直立風冷無線充電座 50W。在之前,我曾經介紹過 小米的無線充電寶 30W 10000mAh ,那是一個相當實用的二合一無線充電組合

閱讀更多