題 如何備份git repo?


我打算從SVN切換到git。使用svn我只需複制我的repo文件夾即可備份它。但是git沒有,所以我該怎麼辦?

我應該在單獨的驅動器上創建克隆並通過拉動我的項目進行更新嗎?然後我可以刻錄/存檔此文件夾,它將具有所有歷史記錄?

這可能是顯而易見的,但我想確保什麼時候備份。我仍然假裝有一個根存儲庫。


24
2017-12-08 10:59


起源


也可以看看: 備份GitHub存儲庫 (答案也適用於非GitHub git項目) - Martin Thoma


答案:


你只需複制它。混帳  使用repo文件夾,它只是隱藏在普通目錄視圖中。 (該文件夾已命名 .git 在* nix系統上,所以它只在您使用時出現 ls -a。我假設它在Windows中設置了“隱藏”屬性,但我從未在Windows環境中使用過git,所以我不確定它是如何在那里處理的。)


12
2017-12-08 11:11



我忽略了我的主幹中的幾個項目文件。所以我真的可以復制它? (我假設它的工作方式與linux相同)。那麼克隆只是一個文件副本嗎?我想如果我拉我想要的所有數據都在文件夾中。我檢查了.git文件,但我的svn主幹中有.svn文件,並沒有考慮檢查歷史數據是否在那裡
在Windows上,它仍然是 .git,具有“隱藏”屬性。 - grawity
@ acidzombie24: .git 目錄包含 整個 存儲庫狀態,包括歷史記錄。 (那是“分佈式”部分。) - grawity
@grawity:它更像是“自包含”部分,分佈式部分就是當你在自給自足的存儲庫之間交換差異時:) - akira


akira的答案是正確的,但您可以添加--mirror來創建一個裸倉庫(對於稍小的備份)。

我們使用以下策略(幾乎完全):

git clone --mirror yourrepo backup.repo
tar cjf backup.repo.tar.bz2 backup.repo
scp backup.tar.bz2 ssh://somewhereelse

然後,從備份中恢復:

tar xjf backup.repo.tar.bz2
git clone backup.repo yourrepo

16
2017-12-16 15:12



這很有幫助,謝謝。如何使用備份的repo恢復工作樹? - Jonathan Day


我正在使用 git捆綁。要製作複製文件(一個備份文件),請執行:

git bundle create backup.bundle master

要使用分支主服務器還原存儲庫,只需克隆backup.bundle文件:

git clone backup.bundle -b master my-project

10
2018-04-09 10:39





在其他地方創建一個新的克隆:

 % git clone yourepo somewhereelse

順便說一句,git 具有 一個repo文件夾,您可以在子目錄下的工作副本中找到它 .git。每個工作副本都有“repo文件夾”。


2
2017-12-08 12:46



我不認為克隆是可接受的備份,因為它是 不 一個精確的副本。至少克隆的repo的遠程分支將在克隆中丟失,並且克隆的repo的分支將在克隆中顯示為遠程分支。 - sleske