基本的なUnixコマンドを使用してgitリポジトリを(クローンではなく)コピーしても大丈夫ですか?


22

私はgitを使用するのは初めてで、Gitリポジトリをを介してではなく、一般的なUNIXコマンド(cpまたはtar/ untag)でコピーしても大丈夫かどうか疑問に思っていましたgit clone

私は、いくつかのコードがgitでチェックアウトした実稼働環境(python virtual)がある状況にいます。を使用して環境全体をコピーすることは、gitの観点から悪い考えかどうか疑問に思っていtarます。このアプローチは、コードベース/環境の簡単なコピーを作成するのに便利です。

私の懸念は、git cloneが一意のIDを作業コピーに関連付けて、一方が他方からファイルシステムコピーされた場所に2つの作業コピーが存在する場合に競合を引き起こす可能性があることです。


ソース管理下にあるファイルとそうでないファイルがあり、保存する必要があるファイルのアクセス許可があったので、すごいこの状況でした。この質問をしてくれてうれしいです。
ジョーC

回答:


21

それはまったく問題ありません。

git すべての履歴、コミットなどをサイトに保存します-これはDCVSの基本的なプロパティです。

厳密に言えば、gitDCVSの全体のポイントは、ということですので、コピーされたリポジトリはどこでも走り回っているとうまく動作することができ、それは任意のリポジトリの外側に何が起こっているのかを知る必要がないとあなたがそれを教えてくれない場合を除き、実際に

ここでも同じ原則が適用されます。


1
私の理解では、複製されたリポジトリには親へのリンクが含まれます。OSのコピーコマンドを使用しても、そのリンクは作成されません。
トニー

@Tony True。ただしgit remote remove origin、を使用してそのリンクを削除できます。これにより、Gitが親リポジトリをアップストリームとして使用するのを停止します。
new123456

2

Git、Hg、またはSVNを使用する場合、作業ディレクトリ全体をシステム上の他の場所にコピーし、通常どおり機能し続ける必要があります。他のSCMについてコメントすることはできません。


0

これはもっと珍しいユースケースですが、...

このrepoユーティリティが.gitディレクトリにシンボリックリンクを作成するのを見てきました。その場合、コピーを行うときに、シンボリックリンクを間接参照する必要があります。例えば:

cp -r -L <source-repo-dir> <destination-repo-dir>

0

大丈夫ですが、レポを他の誰かと共有しようとしている場合は、以下を考慮してください

  • あなたのconfigファイルは、他の人が気にしないかもしれないリモートを持っているかもしれません。
  • あなたのlogsフォルダは、共有したいない可能性があることを言及しています。Gitは、最終結果に満足するまでコンピューターで厄介なことを実行し、それをリモートにプッシュして(ときどき)共有できるという点で優れています。その厄介な歴史のいくつかはあなたのreflogにあるかもしれません。
  • あなたのinfo/excludeファイルはあなたが無視したいファイルだけ無視しているかもしれません。
  • また、フック、ブランチ、その他個人的なものをたくさん持つことができ、共有しないことを好む...
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.