gitリポジトリをバックアップするにはどうすればよいですか?


26

SVNからgitに切り替える予定です。svnでは、バックアップしたいときにレポフォルダーをコピーするだけです。しかし、GitにはGitがないため、どうすればよいですか?

別のドライブにクローンを作成し、プロジェクトからプルして更新する必要がありますか?その後、このフォルダを書き込み/アーカイブできます。すべての履歴が保存されますか?

これはおそらく明らかですが、バックアップに関しては確認したいと思います。私はまだルートリポジトリがあるふりをしています。


参照:GitHubリポジトリのバックアップ(回答はGitHub以外のgitプロジェクトでも機能します)
Martin Thoma 14年

回答:


14

コピーするだけです。git レポフォルダーを使用しますが、通常のディレクトリビューでは非表示になっています。(フォルダは.git* nixシステムで命名されているため、使用する場合にのみ表示さls -aれます。Windowsで「隠し」属性を設定すると仮定しますが、Windows環境ではgitを使用したことがないため、そこでの処理方法)


トランクにはいくつかのプロジェクトファイルがありますが、無視します。文字通りコピーできますか?(Linuxと同じように動作すると仮定します)。クローンは単なるファイルコピーですか?必要なすべてのデータがフォルダにある場合、私は推測します。.gitファイルがあることを確認しましたが、svnトランクに.svnファイルがあり、履歴データがそこにあるかどうかを確認しようとは思いませんでした

2
Windowsでは、.git「非表示」属性を使用して、まだです。
grawity

1
@ acidzombie24:.gitディレクトリには、履歴を含むリポジトリ全体の状態が含まれます。(それは「分散」部分です。)
grawity

5
@grawity:あなたは自己完結リポジトリ間の差分を交換するときに、より「自己完結」の部分は、分散部分が:)です
アキラ

19

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

2
これは役に立ちます、ありがとう。バックアップされたリポジトリを使用して作業ツリーを復元するにはどうすればよいですか?
ジョナサンデー

10

git bundleを使用しています。コピーファイル(1つのバックアップファイル)を作成するには:

git bundle create backup.bundle master

ブランチマスターでリポジトリを復元するには、backup.bundleファイルを複製するだけです。

git clone backup.bundle -b master my-project

2

別の場所に新しいクローンを作成します。

 % git clone yourepo somewhereelse

ところで、git はレポジトリフォルダーがあります.git。サブフォルダーの下の作業コピーで見つけることができます。すべての作業コピーには、その「レポフォルダー」があります。


10
クローンは正確なコピーではないため、バックアップとして受け入れられるとは思わない。少なくともクローンリポジトリのリモートブランチはクローンに存在せず、クローンリポジトリのブランチはクローンのリモートブランチとして表示されます。
sleske
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.