Di Magit, apa perbedaan antara 'simpanan' dan 'potret'?

17

The pengguna Magit pengguna mencakup dua set "menyembunyikannya" perintah: perintah-kasus yang lebih rendah menyimpan sebuah simpanan , dan perintah atas kasus save a snapshot . Setelah berkonsultasi dengan Google dan Stack Overflow dan git-stash(1)halaman manual, saya masih tidak tahu apa bedanya.

Apa bedanya?

Norman Ramsey
sumber
1
Pemahaman saya adalah bahwa stashjuga akan mengatur ulang (membatalkan) perubahan dan snapshotakan meninggalkan perubahan di ruang kerja (bisa berguna jika Anda akan mengatur ulang komit sebelum mendorong).
wvxvw

Jawaban:

24

Varian "simpanan" dan "foto" membuat objek simpanan yang sama. Perbedaannya adalah bahwa ketika Anda membuat snapshot, maka perubahan simpanan tidak dihapus dari file di pohon kerja dan / atau indeks. (Sama seperti ketika Anda mengambil snapshot dari teman-teman Anda bersenang-senang - itu tidak menyebabkan mereka menghilang juga ;-)

Ini dimaksudkan sebagai semacam mekanisme cadangan. Katakanlah Anda sedang melakukan beberapa refactoring yang rumit dan Anda baru saja menguji dan kode yang dimodifikasi masih tampak berfungsi tetapi Anda belum selesai. Sekarang akan menjadi saat yang tepat untuk membuat snapshot, sehingga Anda memiliki sesuatu untuk kembali jika Anda mengacaukannya nanti.

Tentu saja Anda bisa membuat komit "wip" sementara, tepat di cabang yang sedang Anda kerjakan, untuk mencapai hal yang sama. Biasanya itu yang saya lakukan.

Dan Anda juga dapat mengotomatiskan proses perekaman sedang berlangsung dengan mengaktifkan mode Wip . Saya memang memiliki mode ini diaktifkan sebagai jaring pengaman, tapi saya masih membuat wip melakukan langsung pada cabang saat ini atau membuat snapshot. Itu lebih mudah untuk dikerjakan daripada wasit wip

Perhatikan bahwa Magit hadir dengan implementasi simpanan tersendiri yang ditulis dalam Elisp. Itu diperlukan untuk mengimplementasikan varian snapshot dan varian simpanan hanya-kerja dan indeks-saja. Git tidak menyediakan varian ini.

tarsius
sumber