Dalam pertanyaan Git sebelumnya , Daniel Benamy berbicara tentang alur kerja di Git:
Saya sedang mengerjakan master dan melakukan beberapa hal dan kemudian memutuskan untuk menunda pekerjaan itu. Saya membuat cadangan beberapa komitmen dan kemudian bercabang dari sebelum saya memulai pekerjaan omong kosong saya.
Dia ingin memulihkan kondisi kerjanya ke titik waktu sebelumnya tanpa kehilangan perubahannya saat ini. Semua jawaban berkisar, dalam berbagai cara, seperti
git branch -m master crap_work
git branch -m previous_master master
Bagaimana ini dibandingkan dengan git stash
? Saya agak bingung mencoba melihat perbedaan kasus penggunaan di sini ketika sepertinya semua git stash
sudah ditangani dengan percabangan…
@ Jordi Bunster : Terima kasih, itu membereskan semuanya. Saya rasa saya akan mempertimbangkan "menyembunyikan" sebagai cabang yang ringan, tanpa nama. Jadi apa pun yang dapat dilakukan simpanan, cabang juga bisa tetapi dengan lebih banyak kata. Bagus!
git stash list
nama simpanan Anda.git stash show -u
untuk menunjukkan perbedaan simpanan terhadap copy pekerjaan.Saat Anda memulihkan simpanan, perubahan Anda diterapkan kembali dan Anda terus mengerjakan kode Anda.
Untuk menyimpan perubahan Anda saat ini
Anda juga dapat memiliki lebih dari satu simpanan. Stash bekerja seperti tumpukan. Setiap kali Anda menyimpan simpanan baru, itu akan diletakkan di atas tumpukan.
Perhatikan
stash@{0}
bagiannya? Itu ID simpanan Anda. Anda akan membutuhkannya untuk memulihkannya nanti. Ayo lakukan sekarang. ID simpanan berubah dengan setiap simpanan yang Anda buat. stash @ {0} mengacu pada simpanan terakhir yang Anda buat.Untuk menerapkan simpanan
Anda mungkin melihat simpanan masih ada setelah Anda menerapkannya. Anda dapat menjatuhkannya jika Anda tidak membutuhkannya lagi.
Atau, karena simpanan berfungsi seperti tumpukan, Anda dapat mengeluarkan simpanan terakhir yang Anda simpan:
Jika Anda ingin menghapus semua simpanan Anda, jalankan perintah 'clear':
Mungkin Anda tidak terlalu sering menggunakan simpanan. Jika Anda hanya ingin menyimpan perubahan dengan cepat untuk memulihkannya nanti, Anda dapat meninggalkan ID simpanan.
Jangan ragu untuk bereksperimen dengan simpanan sebelum menggunakannya pada beberapa pekerjaan yang sangat penting.
Saya juga memiliki versi yang lebih mendalam tentang ini yang diposting di blog saya .
sumber
Saya selalu waspada terhadap simpanan git. Jika Anda menyimpannya beberapa kali, keadaan cenderung menjadi berantakan. daftar simpanan git akan menampilkan daftar simpanan bernomor yang Anda buat, dengan pesan jika Anda memberikannya ... Tetapi masalahnya terletak pada kenyataan bahwa Anda tidak dapat membersihkan simpanan kecuali dengan git simpanan yang brutal (yang menghapus semuanya) . Jadi, kecuali jika Anda selalu anal dalam memberikan pesan yang sangat deskriptif untuk simpanan Anda (agak bertentangan dengan filosofi simpanan), Anda akan mendapatkan banyak simpanan yang tidak dapat dipahami.
Satu-satunya cara yang saya tahu untuk mencari tahu mana yang menggunakan gitk --semua dan temukan simpanannya. Setidaknya ini memungkinkan Anda melihat komit tempat penyimpanan dibuat, serta perbedaan semua yang termasuk dalam simpanan itu.
Perhatikan bahwa saya menggunakan git 1.5.4.3, dan menurut saya 1.6 menambahkan git stash pop, yang menurut saya akan menerapkan simpanan yang dipilih dan menghapusnya dari daftar. Yang terlihat jauh lebih bersih.
Untuk saat ini, saya selalu mencoba untuk membuka cabang kecuali jika saya benar-benar yakin saya akan kembali ke simpanan itu di hari yang sama, bahkan dalam waktu satu jam.
sumber
git stash drop [<stash>]
Jika Anda mencari alur kerja yang mungkin lebih pas daripada git stash, Anda mungkin ingin melihat git-bottle . Ini adalah utilitas untuk tujuan menyimpan dan memulihkan berbagai status kerja git seperti biasa git melakukan, secara efektif memotret status terkini dan terkait dari pohon kerja Anda dan semua berbagai status file yang ditampilkan di bawah status git.
Perbedaan utama dari
git stash
:git stash
menyimpan status git kotor secara sempit (file yang dimodifikasi, dan file yang ditambahkan dalam indeks), sedangkangit-bottle
dirancang untuk menyimpan segala sesuatu yang berbeda dariHEAD
, dan itu membedakan dengan cara yang melindungi antara jalur yang dimodifikasi, dimodifikasi dan tidak ditambahkan, tidak ditambahkan, dipisahkan, dan status rebase / merge lengkap (hanya jalur di bawah.gitignore
yang tidak disimpan).git stash
simpan untuk menyimpan objek yang perlu Anda lacak secara terpisah. Jika saya menyimpan sesuatu 2 minggu yang lalu, saya mungkin tidak mengingatnya, sedangkangit-bottle
menyimpan sebagai komitmen tentatif ke cabang saat ini . Tindakan sebaliknyagit-unbottle
yang setara dengangit stash
pop. Komit ini dapat didorong dan dibagikan di antara repositori. Ini dapat berguna untuk build jarak jauh, di mana Anda memiliki repositori lain di server jarak jauh hanya untuk membangun, atau untuk berkolaborasi dengan orang lain dalam penyelesaian konflik.sumber