婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用Git管理二進制大對象的方法

使用Git管理二進制大對象的方法

熱門標簽:依蘭縣地圖標注app pageadm實現地圖標注 山東企業電銷機器人價格 百度地圖標注開鎖電話 公司400電話辦理價格 潮州地圖標注 安陽百應電銷機器人加盟 琿春市地圖標注app 百度中國地圖標注中心

通過這系列的前六篇文章,我們已經學會使用 Git 來對文本文件進行版本控制的管理。我們不禁要問,還有二進制文件呢,也可進行進行版本控制嗎?答案是肯定的,Git 已經有了可以處理像多媒體文件這樣的二進制大對象塊(blob)的擴展。因此,今天我們會學習使用 Git 來管理所謂的二進制資產。

似乎大家都認可的事就是 Git 對于大的二進制對象文件支持得不好。要記住,二進制大對象與大文本文件是不同的。雖然 Git 對大型的文本文件版本控制毫無問題,但是對于不透明的二進制文件起不了多大作用,只能把它當作一個大的實體黑盒來提交。

設想這樣的場景,有一個另人興奮的第一人稱解密游戲,您正在為它制作復雜的 3D 建模,源文件是以二進制格式保存的,最后生成一個 1GB 大小的的文件。您提交過一次,在 Git 源倉庫歷史中有一個 1GB 大小的新增提交。隨后,您修改了下模型人物的頭發造型,然后提交更新,因為 Git 并不能把頭發從頭部及模型中其余的部分離開來,所以您只能又提交 1GB 的量。接著,您改變了模型的眼睛顏色,提交這部分更新:又是 GB 級的提交量。對一個模型的一些微小修改,就會導致三個 GB 級的提交量。對于想對一個游戲所有資源進行版本控制這樣的規模,這是個嚴重的問題。

不同的是如obj這種格式的文本文件,和其它類型文件一樣,都是一個提交就存儲所有更新修改狀態,不同的是obj 文件是一系列描述模型的純文本行。如果您修改了該模型并保存回obj 文件,Git 可以逐行讀取這兩個文件,然后創建一個差異版本,得到一個相當小的提交。模型越精細,提交就越小,這就是標準的 Git 用例。雖然文件本身很大,但 Git 使用覆蓋或稀疏存儲的方法來構建當前數據使用狀態的完整描述。

然而,不是所有的都是純文本的,但都要使用 Git,所以需要解決方案,并且已經出現幾個了。

OSTree 開始是作為 GNOME 項目出現的,旨在管理操作系統的二進制文件。它不適用于這里,所以我直接跳過。

Git 大文件存儲(LFS) 是放在 GitHub 上的一個開源項目,是從 git-media 項目中分支出來的。git-media 和 git-annex 是 Git 用于管理大文件的擴展。它們是對同一問題的兩種不同的解決方案,各有優點。雖然它們都不是官方的項目,但在我看來,每個都有獨到之處:

git-media 是集中模式,有一個公共資產的存儲庫。你可以告訴 git-media 大文件需要存儲的位置,是在硬盤、服務器還是在云存儲服務器,項目中的每個用戶都將該位置視為大型文件的中心主存儲位置。 git-annex 側重于分布模式。用戶各自創建存儲庫,每個存儲庫都有一個存儲大文件的本地目錄git/annex。這些 annex 會定期同步,只要有需要,每個用戶都可以訪問到所有的資源。除非通過 annex-cost 特別配置,否則 git-annex 優先使用本地存儲,再使用外部存儲。

對于這些,我已經在生產中使用了 git-media 和 git-annex,那么下面會向你們概述其工作原理。

git-media

git-media 是使用 Ruby 語言開發的,所以首先要安裝 gem(LCTT 譯注:Gem 是基于 Ruby 的一些開發工具包)。安裝說明在其網站上。想使用 git-meida 的用戶都需要安裝它,因為 gem 是跨平臺的工具,所以在各平臺都適用。

安裝完 git-media 后,你需要設置一些 Git 的配置選項。在每臺機器上只需要配置一次。

$git config filter.media.clean "git-media filter-clean"
$ git config filter.media.smudge "git-media filter-smudge"

在要使用 git-media 的每個存儲庫中,設置一個屬性以將剛剛創建的過濾器結合到要您分類為“媒體”的文件類型里。別被這種術語混淆。一個更好的術語是“資產”,因為“媒體”通常的意思是音頻、視頻和照片,但您也可以很容易地將 3D 模型,烘焙和紋理等歸類為媒體。

例如:

$ echo "*.mp4 filter=media -crlf" >> .gitattributes
$ echo "*.mkv filter=media -crlf" >> .gitattributes
$ echo "*.wav filter=media -crlf" >> .gitattributes
$ echo "*.flac filter=media -crlf" >> .gitattributes
$ echo "*.kra filter=media -crlf" >> .gitattributes

當您要暫存stage這些類型的文件時,文件會被復制到git/media目錄。

假設在服務器已經有了一個 Git 源倉庫,最后一步就告訴源倉庫“母艦”所在的位置,也就是,當媒體文件被推送給所有用戶共享時,媒體文件將會存儲的位置。這在倉庫的 git/config 文件中設置,請替換成您的用戶名、主機和路徑:

[git-media]
transport = scp
autodownload = false #默認為 true,拉取資源
scpuser = seth
scphost = example.com
scppath = /opt/jupiter.git

如果您的服務器上 SSH 設置比較復雜,例如使用了非標準端口或非默認 SSH 密鑰文件的路徑,請使用ssh/config為主機設置默認配置。

git-media 的使用和普通文件一樣,可以把普通文件和 blob 文件一樣對待,一樣進行 commit 操作。操作流程中唯一的不同就是,在某些時候,您應該將您的資產(或稱媒體)同步到共享存儲庫中。

當要為團隊發布資產或自己備份資料時,請使用如下命令:

$ git media sync

要用一個變更后的版本替換 git-media 中的文件時(例如,一個已經美聲過的音頻文件,或者一個已經完成的遮罩繪畫,或者一個已經被顏色分級的視頻文件),您必須明確的告訴 Git 更新該媒體。這將覆蓋 git-media 不會復制遠程已經存在的文件的默認設置:

$ git update-index --really-refresh

當您團隊的其他成員(或是您本人,在其它機器上)克隆本倉庫時,如果沒有在git/config中把autodownload選項設置為true的話,默認是不會下載資源的。但 git-media 的一個同步命令git media sync可解決所有問題。

git-annex

git-annex 的處理流程略微的有些不同,默認是使用本地倉庫的,但基本的思想都一樣。您可以從你的發行版的軟件倉庫中安裝 git-annex,或者根據需要從該網站上下載安裝。與 git-media 一樣,任何使用 git-annex 的用戶都必須在其機器上安裝它。

其初始化設置比 git-media 都簡單。運行如下命令,其中替換成您的路徑,就可以在您的服務器上創建好裸存儲庫:

$ git init --bare --shared /opt/jupiter.git

然后克隆到本地計算機,把它標記為 git-annex 的初始路徑:

$ git clone seth@example.com:/opt/jupiter.clone
Cloning into 'jupiter.clone'... 
warning: You appear to have clonedan empty repository. 
Checking connectivity... done.
$ git annex init "seth workstation" 
init seth workstation ok

不要使用過濾器來區分媒體資源或大文件,您可以使用git annex 命令來配置歸類大文件:

$ git annex add bigblobfile.flac
add bigblobfile.flac
(checksum) ok
(Recording state in Git...)

跟普通文件一樣進行提交操作:

$ git commit -m 'added flac source for sound fx'

但是推送操作是不同的,因為git annex使用自己的分支來跟蹤資產。您首次推送可能需要-u 選項,具體取決于您如何管理您的存儲庫:

$ git push -u origin master git-annex
To seth@example.com:/opt/jupiter.git
* [new branch] master -> master
* [new branch] git-annex -> git-annex

和 git-media 一樣,普通的git push 命令是不會拷貝資料到服務器的,僅僅只是發送了相關的消息,要真正共享文件,需要運行同步命令:

$ git annex sync --content

人已經提交了共享資源,您需要拉取它們,git annex sync 命令將提示您要在本地檢出你本機沒有,但在服務器上存在的資源。

git-media 和 git-annex 都非常靈活,都可以使用本地存儲庫來代替服務器,所以它們也常用于管理私有的本地項目。

Git 是一個非常強大和擴展性非常強的系統應用軟件,我們應該毫不猶豫的使用它。現在就開始試試吧!

標簽:呼和浩特 三明 公主嶺 常德 連云港 林芝 晉中 香港

巨人網絡通訊聲明:本文標題《使用Git管理二進制大對象的方法》,本文關鍵詞  使用,Git,管理,二進制,大,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用Git管理二進制大對象的方法》相關的同類信息!
  • 本頁收集關于使用Git管理二進制大對象的方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲国产精品久久人人爱| 色域天天综合网| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 精品蜜桃在线看| 免费成人在线播放| 久久一夜天堂av一区二区三区| 免费在线看成人av| 欧美怡红院视频| 日韩精品一二三四| 91精品国产入口在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美日韩视频在线第一区| 成人免费在线视频| 奇米精品一区二区三区在线观看| 国产·精品毛片| 欧美性一级生活| 精品福利视频一区二区三区| 久久精品一区二区三区不卡| 日韩精品一区二区三区蜜臀 | 99国产欧美另类久久久精品| 婷婷丁香激情综合| 99久久精品国产导航| 中文字幕一区二区三区在线播放| 99视频在线精品| 久久精品亚洲国产奇米99 | 国产精品国产三级国产aⅴ原创 | 热久久一区二区| 欧美一级二级三级蜜桃| 久99久精品视频免费观看| 精品第一国产综合精品aⅴ| 国产一区二区三区国产| 国产欧美1区2区3区| 色婷婷综合五月| 五月天亚洲婷婷| 日韩一区二区三区在线观看| 国产精品一区二区男女羞羞无遮挡 | 亚洲综合在线视频| 欧美日韩不卡一区二区| 看电影不卡的网站| 久久精品一区四区| 91在线视频网址| 亚洲成人动漫精品| 精品福利视频一区二区三区| 99在线精品免费| 日韩精品国产精品| 国产女主播一区| 欧美视频一区在线| 国精产品一区一区三区mba桃花| 国产精品电影院| 88在线观看91蜜桃国自产| 麻豆国产精品777777在线| 国产日产欧美一区| 91久久人澡人人添人人爽欧美| 免费观看91视频大全| 国产精品久久久久影院色老大| 欧美日本韩国一区二区三区视频| 国产综合色视频| 一区二区三区久久久| 2020国产精品自拍| 在线免费不卡电影| 久久99热狠狠色一区二区| 国产精品大尺度| 欧美专区在线观看一区| 国产精品一区免费视频| 亚洲国产成人高清精品| 爽爽淫人综合网网站| 久久亚洲综合av| 欧美在线制服丝袜| 国产伦精一区二区三区| 一区二区三区.www| 国产精品入口麻豆原神| 久久精品久久综合| 亚洲激情校园春色| 久久人人97超碰com| 欧美自拍偷拍一区| 成人亚洲一区二区一| 亚洲电影一区二区| 国产精品女上位| 欧美电影免费观看高清完整版在| 99re66热这里只有精品3直播| 久久狠狠亚洲综合| 日韩福利视频网| **欧美大码日韩| 久久女同互慰一区二区三区| 欧美日韩黄色影视| 色婷婷av一区| 国产夫妻精品视频| 午夜亚洲福利老司机| 国产精品久久久久久久久免费丝袜| 精品剧情在线观看| 91精品婷婷国产综合久久竹菊| 91在线视频免费观看| 成人视屏免费看| 国产在线视频一区二区三区| 日韩av电影免费观看高清完整版在线观看| 中文在线一区二区| 国产无一区二区| 欧美大片日本大片免费观看| 在线播放欧美女士性生活| 欧美日韩一级视频| 欧美性生活影院| 色欧美片视频在线观看在线视频| 成人久久视频在线观看| 成人免费毛片a| 成人在线视频一区| 成人小视频免费观看| 风间由美一区二区av101| 国产精品一卡二卡| 99精品视频一区| jlzzjlzz亚洲日本少妇| 99视频超级精品| 97精品久久久久中文字幕| 不卡欧美aaaaa| 91在线视频在线| 在线这里只有精品| 欧美日韩中文字幕一区二区| 欧美一区二区三区电影| 欧美变态tickling挠脚心| 日韩欧美中文一区二区| 精品久久久网站| 捆绑紧缚一区二区三区视频 | 中文字幕在线一区| 国产精品视频看| 亚洲欧美日韩国产成人精品影院| 亚洲综合久久av| 婷婷中文字幕综合| 麻豆精品一区二区综合av| 国产一区二区精品久久91| 成人av网站大全| av中文字幕一区| 欧美日韩一级二级三级| 在线播放欧美女士性生活| 日韩免费高清av| 中日韩av电影| 亚洲国产综合色| 韩国女主播一区| 99久久婷婷国产综合精品| 欧美日韩五月天| 久久久蜜桃精品| 国产精品久久久久久久久免费相片| 亚洲黄色小视频| 麻豆免费看一区二区三区| 不卡的电影网站| 在线播放国产精品二区一二区四区| 久久尤物电影视频在线观看| 日韩码欧中文字| 老司机精品视频线观看86| 成人av先锋影音| 欧美精品自拍偷拍| 欧美国产综合一区二区| 日韩专区在线视频| 国产乱码字幕精品高清av | 欧美电影精品一区二区| 中文字幕一区二区日韩精品绯色| 日本视频在线一区| 99热精品国产| 日韩欧美国产精品一区| 日韩码欧中文字| 韩国精品在线观看| 欧美三级日韩三级| 久久久不卡网国产精品二区| 亚洲一卡二卡三卡四卡五卡| 国产成人99久久亚洲综合精品| 欧美私人免费视频| 国产精品污www在线观看| 蜜臀av性久久久久av蜜臀妖精 | 国产亚洲一区字幕| 亚洲成人久久影院| 成人精品亚洲人成在线| 91精品免费在线观看| 亚洲精品中文字幕在线观看| 国产传媒欧美日韩成人| 欧美区一区二区三区| 韩国三级电影一区二区| 7777精品伊人久久久大香线蕉经典版下载| 中文文精品字幕一区二区| 日本不卡免费在线视频| 欧美亚洲综合在线| 日韩一区欧美一区| 国产a视频精品免费观看| 精品国产三级电影在线观看| 亚洲一区二区欧美| 成人h精品动漫一区二区三区| 国产婷婷色一区二区三区四区| 蜜臀91精品一区二区三区| 欧美色视频在线观看| 亚洲精品乱码久久久久久日本蜜臀| 国产宾馆实践打屁股91| 久久亚洲影视婷婷| 狠狠色狠狠色综合系列| 99国内精品久久| 国产精品久久久久四虎| 丁香六月久久综合狠狠色| 久久久久国产成人精品亚洲午夜| 久久成人av少妇免费| 欧美www视频| 久久99精品久久只有精品| 久久综合久色欧美综合狠狠| 国产一区二区在线电影| 久久久久国产精品麻豆|