Apakah boleh menyalin (bukan mengkloning) repositori git menggunakan perintah dasar Unix?

22

Saya cukup baru menggunakan git dan bertanya-tanya apakah boleh menyalin repositori Git dengan perintah UNIX yang umum (seperti cpatau tar/ untag), daripada melalui git clone.

Saya dalam situasi di mana saya memiliki lingkungan produksi (python virtual) yang diperiksa beberapa kode di git di dalamnya. Saya bertanya-tanya apakah itu ide buruk dari perspektif git untuk menyalin seluruh lingkungan menggunakan taratau sesuatu. Pendekatan ini akan nyaman untuk membuat salinan cepat basis kode / lingkungan.

Kekhawatiran saya adalah bahwa mungkin git clone mengaitkan beberapa id unik dengan copy pekerjaan yang dapat menyebabkan konflik jika ada dua copy pekerjaan di mana satu adalah filesystem yang disalin dari yang lain.

Joe J
sumber
Wow saya berada dalam situasi ini karena saya memiliki beberapa file di bawah kendali sumber dan beberapa tidak, dan saya memiliki izin file yang perlu saya pertahankan. Saya senang Anda menanyakan pertanyaan ini.
Joe C

Jawaban:

21

Tidak apa-apa.

git menyimpan semua riwayatnya, melakukan, dll di situs - ini adalah properti mendasar dari DCVS.

Secara teknis, gitdapat beroperasi dengan baik dengan repositori yang disalin berkeliling di mana-mana, karena inti dari DCVS adalah bahwa ia tidak harus tahu apa yang terjadi di luar repositori yang diberikan , dan pada kenyataannya tidak kecuali Anda mengatakannya .

Prinsip yang sama berlaku di sini.

baru123456
sumber
1
Pemahaman saya adalah bahwa repositori yang dikloning akan berisi tautan kembali ke induknya. Menggunakan perintah salin OS tidak akan membuat tautan itu.
Tony
@Tony Benar, tetapi Anda bisa menghapus tautan itu dengan menggunakan git remote remove origin, yang menghentikan Git dari menggunakan repositori induk sebagai upstream.
new123456
2

Anda harus dapat menyalin seluruh direktori kerja ke tempat lain di sistem Anda dan membuatnya berfungsi seperti biasa ketika menggunakan Git, Hg, atau SVN. Saya tidak dapat mengomentari SCM lainnya.

Darth Android
sumber
0

Ini adalah kasus penggunaan yang lebih tidak biasa, tetapi ...

Saya telah melihat repoutilitas membuat tautan simbolik di .gitdirektori. Dalam hal itu, ketika Anda melakukan salinan, Anda ingin memastikan bahwa Anda menautkan tautan simbolik. Misalnya:

cp -r -L <source-repo-dir> <destination-repo-dir>
Craig McQueen
sumber
0

Tidak apa-apa, tetapi jika Anda akan membagikan repo Anda dengan orang lain, harap pertimbangkan hal berikut :

  • configFile Anda mungkin memiliki remote, orang lain mungkin tidak peduli.
  • logsFolder Anda akan memiliki referensi yang mungkin tidak ingin Anda bagikan. Git sangat hebat dalam membiarkan Anda melakukan hal-hal buruk di komputer Anda sampai Anda merasa nyaman dengan hasil akhirnya, dan kemudian mendorongnya ke remote untuk (sesekali) membaginya. Beberapa dari sejarah buruk itu mungkin ada di reflog Anda, jadi lebih baik untuk tidak membagikannya IMHO.
  • info/excludeFile Anda mungkin mengabaikan beberapa file yang hanya ingin Anda abaikan.
  • Anda juga dapat memiliki kait, cabang, dan banyak hal lain yang bersifat pribadi dan Anda lebih suka untuk tidak berbagi ...
whoan
sumber