web-dev-qa-db-ja.com

rsync.gitディレクトリ

この質問は、おそらく.gitsとgitリポジトリの一般的な役割についての私の理解の欠如に基づいていますが:

マシン間でgit initを使用して作成したコンテンツでdirをrsyncできますか?

ラップトップにリポジトリがあり、そこから離れる唯一の方法は、リモートホストへのscp/rsyncであり、そこから再度ダウンロードできます。これらのホスト間で完全なディレクトリ構造をrsyncできますか?

24
svrist

はい、それは可能です。 IIRC、gitは相対的なアプローチを使用します。したがって、別のコンピューターと同期しても安全です。

10
Ikke

いくつかの可能性があります:

  • rsyncing中にリポジトリ内でアクティビティがない場合は、rsync.gitリポジトリ(またはリポジトリ全体と作業ディレクトリ)を使用できます(と同じ免責事項rsync://プロトコルを使用)。

  • deprecatedrsyncプロトコル(リポジトリのURL /場所は次のようになります: "rsync://Host.xz/path/to/repo.git/")を使用してクローンまたはフェッチできます。リポジトリにアクティビティがあると、クローン(またはフェッチ)が破損する可能性があるため、このプロトコルは非推奨であることに注意してください。

    また、私が聞いたように、2007年以降、パックされた参照が存在する場合は正しく機能せず、最近まで誰も気づいていませんでした。 Git 2.8では(実際に)消えます。

  • または、他のマシンで git bundlersyncitまたはscp itを作成してから、バンドルから複製またはフェッチすることもできます。

28
Jakub Narębski

問題なくrsyncを実行できますが、マシンにローカルなホスト名で宣言された(つまり、/ etc/hostsにのみ格納されている)リモートがある場合、それらは明らかに機能しません。

ただし、コンテンツの同期にgit自体を使用しない理由はありますか?

6
Milan Babuškov

はい、できますが、 このスレッド に示すように、ベアリポジトリを使用して行う必要があります。

$ git clone --bare ./projet projet.git
$ rsync -a --stats --delete ./projet.git/ votre.serveur:~/projets/projet.git/

注:6年以上後、git 2.8(2016年3月)は正式に非推奨になり、git rsyncプロトコルを完全に削除します!

commit 0d0bac6 (30 Jan 2016)by Jeff King(peff を参照してください。
(Merged by Junio C Hamano --gitster- in commit 9f03176 、17 Feb 2016)

それが判明 "git clone "ソースリポジトリが長い間参照をパックしていると、rsyncトランスポートが壊れてしまい、誰もそれに気づいたり文句を言ったりしませんでした。

Commit 0d0bac6 from Jeff King(peff すべての詳細があります。

5
VonC

はい、rsyncing .git dirが可能であり、リポジトリの完全なクローンが作成されます。

1
Bombe

Rsyncを使用して.gitをバックアップすることは可能ですが、(少なくとも私にとっては)1つのキャッチで更新できません。次回rsyncを再試行すると、オブジェクトの名前が大幅に変更され、それらを削除できません。rsyncまたはLinuxシステムに慣れていないため、rsyncする前に.gitバックアップを削除します。

これは:

> chmod -R 777 /path/of/your/backup/.git
> rm -fr /path/of/your/backup/.git
> rsync /path/of/your/Origin/.git /path/of/your/backup/.git

私は知っています、これは非常に負担がかかり、愚かです..これを行うためのより良い方法があることを私に知らせてください..

1
Cyrus Ivan