Saya mulai bekerja pada beberapa file yang saya miliki di git submodule dalam proyek lain. Namun, karena itu adalah submitule git, ia tidak pernah memeriksa "master" dan sebagai gantinya hanya memeriksa kepala dan meletakkan semua file dalam folder di "no branch".
Sekarang saya telah membuat beberapa perubahan secara tidak sengaja pada file-file ini, saya baru menyadari bahwa saya sedang bekerja dalam submodule "no branch", dari proyek saya.
Bagaimana cara memasukkan file-file itu ke cabang (seperti master) sehingga saya bisa menyelamatkannya?
git merge $COMMIT_SHA
sekali saya berada di cabang lain.Status “no branch” disebut HEAD terpisah. Disebut ini karena referensi HEAD tidak melekat pada cabang mana pun, melainkan menunjuk langsung pada komit. Untuk melampirkan HEAD ke cabang yang menunjuk ke komit HEAD saat ini, gunakan
git checkout -b branchname
.Anda dapat dengan aman memperbarui cabang yang ada untuk memasukkan komit di HEAD dengan urutan ini:
Atau, setara, menggunakan notasi reflog
HEAD@{1}
untuk menghindari keharusan membuat cabang sementara:Menggunakan cabang sementara akan menjadi ide bagus jika Anda tidak akan segera melakukan penggabungan.
Jika Anda ingin secara paksa menimpa cabang yang ada untuk menunjuk komit di HEAD yang dapat Anda gunakan
git branch -f branchname && git checkout branchname
. Jika komit di HEAD tidak didasarkan pada ujung branchname saat ini, ini akan menghasilkan perubahan non-fast-forward ke branchname yang biasanya ingin Anda hindari (ini dilihat sebagai riwayat penulisan ulang).sumber
Untuk menambah jawaban sebelumnya:
Saat Anda masih menggunakan HEAD yang terlepas, Anda dapat menambahkan tag:
Ini akan menambahkan tag ke komit, yang akan membuatnya terlihat di
gitk
dan alat lainnya.sumber