Minggu lalu saya membuat repo Github dan lupa memilih lisensi untuk repo tersebut. Sekarang sudah ada 3 komit besar.
Saya telah bertanya kepada 3 kontributor apakah tidak apa-apa, jika saya menghapus repo dan kemudian membuatnya lagi dengan nama yang sama dan kali ini memilih lisensi saat membuat repo, dan mereka baik-baik saja.
Pertanyaan
Apakah ada cara saya mendapatkan komit ke repo baru (kali ini komit pertama adalah file LISENSI) dan masih menyimpan info meta komit?
Jawaban:
Ya, dengan menambahkan remote dan memilih ceri komit di atas komit pertama Anda.
Jawaban selanjutnya adalah jika Anda masih ingin menambahkan LISENSI ke repo Anda sebelumnya.
Iya. Anda dapat menempatkan komit LISENSI Anda sebagai komit pertama dengan melakukan rebasing.
Rebasing adalah cara gits untuk mengatur ulang urutan komit sambil menjaga semua penulis komit dan tanggal komit tetap utuh.
Saat mengerjakan repo bersama, biasanya tidak disarankan kecuali seluruh tim Anda fasih. Bagi yang tidak, mereka bisa mengkloning salinan baru dari repositori.
Inilah cara Anda mendapatkan LISENSI Anda komit sebagai komit pertama.
1. Perbarui dan susun ulang salinan lokal Anda
Periksa proyek Anda dan tempatkan file LISENSI di commit ON TOP dari 3 commit stack Anda saat ini.
Kemudian lakukan rebase interaktif pada cabang master untuk MENGATUR ulang komit.
Ini akan membuka editor. Pindahkan baris terbawah (komit "Awal" Anda, komit terbaru) ke bagian atas file. Kemudian simpan dan keluar dari editor.
Segera setelah Anda keluar dari editor, git akan menulis komit dalam urutan yang baru saja Anda tentukan.
Anda sekarang memiliki salinan lokal repositori Anda yang diperbarui. melakukan:
untuk memverifikasi.
2. Paksa push status repo baru Anda ke github
Sekarang salinan Anda diperbarui, Anda harus mendorongnya secara paksa ke github.
Ini akan memberi tahu github untuk memindahkan cabang master ke lokasi barunya. Anda sebaiknya hanya memaksakan push pada kesempatan yang jarang terjadi seperti ini di mana semua orang yang bekerja dengannya mengetahui perubahan yang menunggu, jika tidak maka akan membingungkan kolaborator Anda.
3. Sinkronisasi kolaborator ke github
Terakhir, semua kolaborator harus melakukan sinkronisasi ke repositori ini.
Pertama, mereka harus memiliki repositori yang bersih karena perintah berikut dapat merusak jika ada perubahan yang belum disimpan.
Itu dia. Semua orang harus sinkron sekarang.
sumber
Saya memiliki masalah serupa di mana saya lupa membayar repo ke github saya dan menambahkan beberapa commit sebelum saya menyadari kesalahan saya.
Saya menemukan solusi yang cukup sederhana.
Pertama, lepas remote ke repo asli
git remote remove origin
Kedua, tambahkan remote ke garpu baru di github saya
git remote add origin <my repo URL>
Kemudian saya mendorong ke master asal dan semua komitmen saya muncul di github saya.
sumber
git push --set-upstream origin master
, tetapi Git membuat Anda menyadari hal ini.SourceGit = UrlS
Sekarang Tujuan akan memiliki data yang sama dengan Sumber (Anda juga dapat menggunakan origin, bukan origin2)
sumber
Saya menggunakan pendekatan berikut:
Clone repo sumber ke folder seperti / c / SrcRepo
Clone repo tujuan ke folder seperti / c / DstRepo dan alihkan ke cabang tujuan
Di folder root dari repo tujuan, jalankan perintah:
git pull / c / SrcRepo srcBranch --allow-unrelated-histories
Tidak perlu membuat referensi jarak jauh tambahan
sumber