コピーしたgitリポジトリを使用するのは安全ですか? 質問する

コピーしたgitリポジトリを使用するのは安全ですか? 質問する

rsync -aまたは を使用して追跡対象フォルダーのコピーを作成した場合cp -R、そのコピーを git クローンのように使用できますか? それとも、さまざまな奇妙な問題が発生しますか? これはすべて私のコンピューター上で実行されているため、他の誰もリポジトリにアクセスしていません。

明らかに、git でクローンされたディレクトリはコピー元を認識しているため、git pullソースを指定せずに実行できますが、ソースを指定せずに実行できると仮定すると、心配する必要があることはありますか?

実験として、小さなプロジェクトを作成し、それcloneを d およびrsynced し、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 がリモート オリジンを設定しなかったためです。リポジトリにローカルな構成ファイルとログ ファイルは非常に多くあります。ただし、バックアップを復元する場合やリポジトリを別のディレクトリ/ハードドライブ/マシンに移動する場合など、それらを直接コピーしても危険はありません。

おすすめ記事