基本的な Unix コマンドを使用して Git リポジトリをコピー (クローンではない) しても問題ありませんか?

基本的な Unix コマンドを使用して Git リポジトリをコピー (クローンではない) しても問題ありませんか?

私は git の使用にかなり慣れていないのですが、ではなく、一般的な UNIX コマンド (または / など)cptar使用して Git リポジトリをコピーしても大丈夫かどうか疑問に思っています。 untaggit clone

私は、git でチェックアウトされた一部のコードを含む実稼働環境 (python 仮想) を持っている状況にあります。tarまたは何かを使用して環境全体をコピーすることは、git の観点から悪い考えではないかと思っています。 この方法は、コードベース/環境の簡単なコピーを作成するのに便利です。

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

答え1

まったく問題ありません。

gitすべての履歴、コミットなどをサイト上に保存します。これは DCVS の基本的な特性です。

技術的に言えば、gitコピーされたリポジトリがあちこちにあっても問題なく動作します。なぜなら、DCVSのポイントは、特定のリポジトリの外で何が起こっているかを知る必要はないそして実際にはあなたが言わない限り

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

答え2

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

答え3

これはあまり一般的ではない使用例ですが...

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

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

答え4

問題ありませんが、リポジトリを他の人と共有する場合は、次の点を考慮してください。:

  • あなたのconfigファイルには、他の人が気にしないリモートが含まれている可能性があります。
  • フォルダーlogsには、共有したくない参照が含まれている場合があります。Git は、最終結果に満足するまでコンピューターで厄介な作業を実行させ、それをリモートにプッシュして (場合によっては) 共有するのに最適です。その厄介な履歴の一部は reflog にある可能性があるため、共有しない方がよいと個人的には思います。
  • ファイルinfo/excludeは一部のファイルのみを無視している可能性がありますあなた無視したい。
  • フック、ブランチ、その他個人的なもので共有したくないものも多数あります...

関連情報