Memindahkan commit git yang akan di-push dari satu branch ke branch lainnya
Malam yang dingin saat hendak berakhir pekan cocok untuk menuliskan sebuah artikel. Eh, ini curhat atau apa ya? Datar amat, hehe…
Oke, pada malam yang memang sudah terlalu larut malam ini, saya ingin membagikan sebuha tips bagaimana caranya memindahkan sebuah commit-an atau beberapa commit-an dari suatu branch untuk kemudian di-push ke branch lainnya. Ya, tentu saja tips ini saya tujukan untuk pengguna source control git manapun. Baik itu pengguna github, gitlab, bitbucket, ataupun lainnya yang menggunakan engine git sebagai source controlnya.
Lalu bagaimana saya sampai kepikiran untuk menuliskan artikel perihal ini ya? Jadi ceritanya begini. Pada suatu waktu, saya mendapatkan anggota baru pada tim saya (sekarang ini posisi saya sebagai Team Leader). Saya jelaskan bagaimana SOP melakukan pekerjaan pada tim saya tersebut (tentu saja best practice untuk development di tim saya). Tentu semua pengenalan baik itu flow bisnis aplikasi maupun segala macam SDLC di sini, dan apapun itu yang terkait dengan pekerjaan dalam tim saya. Di tim saya, saat hendak melakukan development, saya selalu meminta kepada anggota tim untuk melakukan clone terhadap branch yang sudah saya buat sesuai dengan Story yang ada (di sini saya melakukan branching untuk masing-masing Story saat setiap kali sebuah Story berikut Subtask-subtasknya akan dikerjakan). Pada suatu hari, saya berikan task kecil (sebagai pengenalan untuk anggota tim baru). Beberapa hari kemudian dia meminta saya melakukan concall (conference call) karena sepertinya dia lupa untuk melakukan checkout terlebih dahulu. Dan parahnya lagi, dia baru sadar kalau dia melakukan beberapa commit yang belum di-push (pada saat itu 5 commit-an dengan banyak perubahan code di beberapa file) pada branch yang salah (branch development bukan branch dari Story). Dia hendak akan melakukan perubahan ulang, namun saat itu saya cegah karena saya dapat memindahkan commit-an tersebut ke branch yang seharusnya. Alhasil, dengan menggunakan TeamViewer saya melakukan remote desktop laptopnya (saat itu kita sedang WFH karena Pandemi). Dan commit-an nya pun berhasil saya selamatkan tanpa harus menulis ulang perubahan yang telah dilakukan dari awal.
Lalu, bagaimana cara saya melakukannya?
Berikut kita akan coba hal serupa seperti yang saya lakukan pada kasus tim saya :
- Di sini kita coba pada sebuah project yang sudah saya siapkan. Teman-teman dapat meng-clone project saya pada github saya di :
https://github.com/Agunahwan/api1
- Jika teman-teman sudah melakukan clone project, maka ketika membuka project tersebut akan terlihat seperti ini :
- Kita buka ValuesController dan lakukan perubahan pada function Put dengan mengganti nilai balikan dan isinya menjadi seperti berikut :
- Pastikan tidak terjadi error saat rebuild atau build ulang solution. Kemudian kita lakukan commit seperti berikut :
Jika teman-teman melakukan clone project secara default, maka branch dari project tersebut akan berada pada branch master. Di sini kita akan mencoba untuk memindahkan semua commit-an yang ada pada branch master untuk kemudian di-push kepada branch development pada server git. Pada langkah-langkah berikutnya merupakan proses mulai pemindahan commit-an nya :
- Rename branch master lokal kita dengan branch development. Disini kita rename terlebih dahulu branch master agar di langkah selanjutnya kita dapat dengan mudah menemukan branch mana yang akan kita pindahkan. Terlebih bila dalam suatu project telah memiliki banyak sekali branch yang ada, baik fitur, bugs fixing, maupun lainnya. Jika branch sudah di-rename, maka akan terlihat seperti berikut :
- Teman-teman buka folder solution. Di sana teman-teman akan melihat sebuah folder bertipe hidden dengan nama .git
- Buka folder .git dan edit file config
- Cari branch development dimana memiliki remote origin & merge refs/heads/master. Ubah refs/heads/master menjadi refs/heads/development pada branch development kemudian simpan :
- Saat kita kembali pada Visual Studio, maka akan terlihat bahwa kita sudah berada pada branc development di lokal yang terhubung dengan branch development pada server :
- Kita lakukan synchronize (fetch=>pull=>push dalam 1 perintah) pada git :
- Jika teman-teman melihat kembali history branch development pada remote/server, maka teman-teman akan melihat bahwa commit-an kita tadi yang awalnya berada pada branch master, sudah masuk pada branch development pada server :
Demikian tips dari saya berdasarkan pengalaman yang dialami tim saya (sebenarnya saya juga pernah mengalami hal yang sama sebelumnya, hehe…). Semoga memberikan manfaat buat teman-teman sekalian terkhusus bagi yang mengalami hal yang sama.
Terima kasih dan selamat malam… 😀