Saya memiliki direktori gitrepo1 . Direktori ini adalah repositori git.
Saya ingin memindahkan gitrepo1 ini ke direktori newrepo lain .
Direktori newrepo harus merupakan repositori git baru tanpa kehilangan histori git dan harus berisi direktori gitrepo1 .
Direktori gitrepo1 seharusnya hanya berupa direktori sekarang (di dalam newrepo ), tanpa
.git
indeks apa pun , yaitu TIDAK lagi menjadi repositori git independen atau submodul.
Bagaimana saya bisa melakukan ini?
mv girepo1 newrepo
??Jawaban:
Sangat sederhana. Git tidak peduli tentang apa nama direktorinya. Itu hanya peduli apa yang ada di dalamnya. Jadi, Anda cukup melakukan:
Perhatikan bahwa penyalinan cukup mahal jika repositori besar dan dengan sejarah yang panjang. Anda juga dapat menghindarinya dengan mudah:
Setelah Anda membuatnya
newrepo
, tujuan yang akan diletakkangitrepo1
bisa di mana saja, bahkan di dalamnewrepo
jika Anda menginginkannya. Itu tidak mengubah prosedur, hanya jalur yang Anda tulisgitrepo1
kembali.sumber
cp
seperti hampir setiap perintah atau fungsi dikhususkan untuk OS lain. Faktanya, ini khusus untuk setiap OS yang bukan windows. Coba hubungi microsoft dan tanyakan mengapa mereka bukan POSIX. Bagaimanapun,cp
berarti menyalin.mv
Berarti pindah.rm
Berarti hapus. Anda dapat menemukan padanan windows..git/
berisi semua riwayat, yang mencakup komit terbaru Anda. Dimanapun Anda meletakkannya, Anda memiliki semua sejarahnya. Faktanya, jika semua file di direktori itu berbeda dari repo asli tempat Anda mengambilnya.git/
, satu-satunya hal adalah ia memberi tahu Anda beberapa file dihapus dan beberapa yang tidak terlacak ada. Dengan agit reset --hard
, file yang dihapus akan dipulihkan secara otomatis! Satu-satunya hal yang perlu diperhatikan adalah bahwa hanya dengan menyalin.git/
Anda tidak dapat memulihkan perubahan yang tidak terikat.Agak terlambat dan pertanyaannya sudah terjawab tetapi, untuk melakukannya tanpa sakit kepala:
git status
, katakanlah pengembangan cabanggit clone
proyek dari repo ke folder barugit checkout development
rsync
, tidak termasuk folder .git :rsync -azv --exclude '.git' gitrepo1 newrepo/gitrepo1
Maka Anda baik untuk melanjutkan di mana Anda tinggalkan
sumber
Bahkan lebih sederhana dari itu. Baru saja melakukan ini (di Windows, tetapi seharusnya berfungsi di OS lain):
Git baru saja melihat Anda menambahkan direktori dan mengganti nama banyak file. Bukan masalah besar.
sumber
Saya bukan ahli, tetapi saya menyalin folder .git ke folder baru, lalu menjalankan:
git reset --HARD
sumber