rsync -a
または を使用して追跡対象フォルダーのコピーを作成した場合cp -R
、そのコピーを git クローンのように使用できますか? それとも、さまざまな奇妙な問題が発生しますか? これはすべて私のコンピューター上で実行されているため、他の誰もリポジトリにアクセスしていません。
明らかに、git でクローンされたディレクトリはコピー元を認識しているため、git pull
ソースを指定せずに実行できますが、ソースを指定せずに実行できると仮定すると、心配する必要があることはありますか?
実験として、小さなプロジェクトを作成し、それclone
を d およびrsync
ed し、diff
結果のフォルダーを ed しました。結果は次のとおりです。
itsadok@quad ~
$ git clone project/.git project2
Initialized empty Git repository in /home/itsadok/project2/.git/
itsadok@quad ~
$ rsync -a project/ project3/
itsadok@quad ~
$ diff -r project2 project3
Only in project3/.git: COMMIT_EDITMSG
diff -r project2/.git/config project3/.git/config
7,12d6
< [remote "origin"]
< url = /home/itsadok/project/.git
< fetch = +refs/heads/*:refs/remotes/origin/*
< [branch "master"]
< remote = origin
< merge = refs/heads/master
Files project2/.git/index and project3/.git/index differ
diff -r project2/.git/logs/HEAD project3/.git/logs/HEAD
1c1
< 0000000000000000000000000000000000000000 bf6be23d68d0ede45aca7479795693bfba76e73a itsadok <itsadok@quad.(none)> 1242131284 +0300 clone: from /home/itsadok/project/.git
---
> 0000000000000000000000000000000000000000 bf6be23d68d0ede45aca7479795693bfba76e73a itsadok <itsadok@quad.(none)> 1242131066 +0300 commit (initial): first commit
diff -r project2/.git/logs/refs/heads/master project3/.git/logs/refs/heads/master
1c1
< 0000000000000000000000000000000000000000 bf6be23d68d0ede45aca7479795693bfba76e73a itsadok <itsadok@quad.(none)> 1242131284 +0300 clone: from /home/itsadok/project/.git
---
> 0000000000000000000000000000000000000000 bf6be23d68d0ede45aca7479795693bfba76e73a itsadok <itsadok@quad.(none)> 1242131066 +0300 commit (initial): first commit
Only in project2/.git/logs/refs: remotes
Only in project2/.git: packed-refs
Only in project2/.git/refs: remotes
かなりの違いがありますが、大部分は起源に関する言及に関するもののようです。正しいでしょうか?
ベストアンサー1
安全。
「git clone」を使用する場合の違いは、元のリポジトリが自動的に設定されるので、「git pull」と「git push」を使用して 2 つのリポジトリを簡単に同期できることです。また、「git clone」では、リポジトリのローカルにあるログ、インデックス、その他の構成はコピーされません。リポジトリのバージョン履歴のみがコピーされます (Git は「git gc」の使用時にデータベースを圧縮することがあるため、その履歴もバイトレベルで異なる方法で保存できます)。
例で見られる違いは、rsnc が作業ディレクトリのインデックスとログもコピーし、rsync-copy がリモート オリジンを設定しなかったためです。リポジトリにローカルな構成ファイルとログ ファイルは非常に多くあります。ただし、バックアップを復元する場合やリポジトリを別のディレクトリ/ハードドライブ/マシンに移動する場合など、それらを直接コピーしても危険はありません。