Ada banyak cara berbeda tergantung pada seberapa jauh Anda berada dan cabang mana yang Anda inginkan.
Mari kita lakukan kesalahan klasik:
$ git checkout master
... pause for coffee, etc ...
... return, edit a bunch of stuff, then: oops, wanted to be on develop
Jadi sekarang Anda ingin perubahan ini, yang Anda belum berkomitmen untuk master
, aktif develop
.
Jika Anda tidak memiliki sebuah develop
belum, metode ini sepele:
$ git checkout -b develop
Ini menciptakan develop
cabang baru mulai dari manapun Anda berada sekarang. Sekarang Anda dapat melakukan dan hal-hal baru sudah aktif develop
.
Anda memiliki sebuah develop
. Lihat apakah Git akan membiarkan Anda beralih tanpa melakukan apa pun:
$ git checkout develop
Ini akan berhasil, atau mengeluh. Jika berhasil, bagus! Komit saja. Jika tidak ( error: Your local changes to the following files would be overwritten ...
), Anda masih memiliki banyak opsi.
Mungkin yang termudah adalah git stash
(karena semua jawaban lain yang mengalahkan saya untuk mengklik postkata). Jalankan git stash save
atau git stash push
, 1 atau sekadar polos git stash
yang merupakan kependekan dari save
/ push
:
$ git stash
Ini mengkomit kode Anda (ya, itu benar-benar membuat komit) menggunakan metode non-branch-y yang aneh. Komit yang dibuatnya bukan "on" cabang apa pun tetapi sekarang disimpan dengan aman di repositori, jadi Anda sekarang dapat beralih cabang, lalu "menerapkan" simpanan:
$ git checkout develop
Switched to branch 'develop'
$ git stash apply
Jika semuanya berjalan dengan baik, dan Anda menyukai hasilnya, Anda harus git stash drop
menyimpannya. Ini menghapus referensi ke commit non-branch-y yang aneh. (Mereka masih dalam repositori, dan kadang-kadang dapat diambil dalam keadaan darurat, tetapi untuk sebagian besar tujuan, Anda harus menganggap mereka hilang pada saat itu.)
The apply
langkah melakukan penggabungan perubahan disembunyikan, menggunakan mesin merge Git yang kuat yang mendasari, hal yang sama menggunakan ketika Anda melakukan penggabungan cabang. Ini berarti Anda bisa mendapatkan "gabungkan konflik" jika cabang yang Anda kerjakan secara tidak sengaja, cukup berbeda dari cabang yang Anda maksudkan sedang dikerjakan. Jadi ide yang baik untuk memeriksa hasilnya dengan cermat sebelum Anda menganggap bahwa simpanan diterapkan dengan bersih, bahkan jika Git sendiri tidak mendeteksi adanya konflik gabungan.
Banyak orang menggunakan git stash pop
, yang merupakan kependekan dari git stash apply && git stash drop
. Sejauh ini tidak apa-apa, tetapi itu berarti bahwa jika aplikasi menghasilkan kekacauan, dan Anda memutuskan Anda tidak ingin melanjutkan jalan ini, Anda tidak bisa mendapatkan simpanan kembali dengan mudah. Itu sebabnya saya merekomendasikan apply
hasil yang terpisah , periksa, drop
hanya jika / ketika puas. (Ini tentu saja memperkenalkan titik lain di mana Anda dapat mengambil rehat kopi lagi dan melupakan apa yang Anda lakukan, kembali, dan melakukan hal yang salah , jadi itu bukan obat yang sempurna.)
1 The save
di git stash save
adalah kata kerja tua untuk menciptakan simpanan baru. Git versi 2.13 memperkenalkan kata kerja baru untuk membuat hal-hal lebih konsisten dengan pop
dan untuk menambahkan lebih banyak opsi ke perintah penciptaan. Git versi 2.16 secara resmi menghentikan kata kerja yang lama (meskipun masih bekerja di Git 2.23, yang merupakan rilis terbaru pada saat saya mengedit ini).
git stash
git-scm.com/book/en/Git-Tools-Stashing