Ketika saya memindahkan file di git menggunakan git-mv status menunjukkan bahwa file tersebut telah diubah namanya dan bahkan jika saya mengubah beberapa bagian itu masih dianggap hal yang hampir sama (yang baik karena memungkinkan saya mengikuti sejarahnya) .
Ketika saya menyalin file, file asli memiliki beberapa sejarah yang saya ingin kaitkan dengan salinan baru.
Saya telah mencoba memindahkan file kemudian mencoba checkout kembali di lokasi asli - setelah pindah git tidak akan membiarkan saya checkout lokasi asli.
Saya telah mencoba melakukan copy sistem file dan kemudian menambahkan file - git mencantumkannya sebagai file baru.
Apakah ada cara untuk membuat git merekam operasi penyalinan file dengan cara yang mirip dengan cara git merekam nama file / memindahkan tempat sejarah dapat ditelusuri kembali ke file asli?
diff.renames
kecopies
(misalnya 'git config diff.renames copies
'). Saya setuju bahwa ini sedikit berlawanan dengan intuisi.git log -L123,456:file.xyz
) yang dengan benar mengikuti penggantian nama, tetapi bukan salinan, dan Anda tidak dapat meneruskan - ikuti dalam kasus itu; juga, AFAICT, ini tidak bekerja dengan menyalahkan git.2020-05-19: Solusi berikut ini memiliki keuntungan karena tidak mengubah log dari file asli, tidak membuat konflik gabungan, dan menjadi lebih pendek.
Anda dapat memaksa Git untuk mendeteksi riwayat file yang disalin dalam tiga komit:
--no-ff
.(Kredit pergi ke Raymond Chen .)
Solusi pertama memiliki empat komitmen:
(Solusi diambil dari https://stackoverflow.com/a/44036771/1389680 .)
sumber
move
danrename
?mv
untuk kedua operasi? Saya menggunakan 'move' untuk case yang mungkin melibatkan pengubahan direktori file, dan 'rename' untuk case yang tidak ada.git mv orig new
? Dengan "readd the original", maksud Andacp new orig && git add orig
?