Apakah ada cara saya mendapatkan komit ke repo baru (kali ini komit pertama adalah file LISENSI) dan masih menyimpan info meta komit?
Ya, dengan menambahkan remote dan memilih ceri komit di atas komit pertama Anda.
# add the old repo as a remote repository
git remote add oldrepo https://github.com/path/to/oldrepo
# get the old repo commits
git remote update
# examine the whole tree
git log --all --oneline --graph --decorate
# copy (cherry-pick) the commits from the old repo into your new local one
git cherry-pick sha-of-commit-one
git cherry-pick sha-of-commit-two
git cherry-pick sha-of-commit-three
# check your local repo is correct
git log
# send your new tree (repo state) to github
git push origin master
# remove the now-unneeded reference to oldrepo
git remote remove oldrepo
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.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Kemudian lakukan rebase interaktif pada cabang master untuk MENGATUR ulang komit.
git rebase -i --root
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:
git log
untuk memverifikasi.
2. Paksa push status repo baru Anda ke github
Sekarang salinan Anda diperbarui, Anda harus mendorongnya secara paksa ke github.
git push -f origin master
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.
# make sure there are no unsaved changes
git status
# pull the latest version from github
git fetch
# move their master branch pointer to the one you published to github.
git reset --hard origin/master
Itu dia. Semua orang harus sinkron sekarang.