git stash — Lebih dari Simpan Darurat (Stash Parsial, Stash Berlabel, dan Sisanya)
Di luar penyimpanan darurat panik: stashing bernama, daftar stashing, tampilkan -p, stashing parsial dengan --patch, terapkan vs pop, dan kesalahan file yang tidak tercatat yang akan Anda temui akhirnya.
Anda belajar git stash dalam kepanikan. Seseorang memanggil Anda di tengah fitur, Anda perlu beralih cabang segera, dan stashing adalah keluaran tercepat. Menyelamatkan hari itu.
Kemudian Anda memiliki tiga stashing, lupa apa yang ada di dalamnya, memasukkan yang salah ke cabang yang salah, dan memutuskan bahwa stashing rusak. Tidak rusak. Anda hanya perlu beberapa perintah tambahan.
File yang tidak tercatat menangkap Anda (baca ini terlebih dahulu)
git stash hanya menyimpan yang tercatat file — file yang sudah dikenal oleh git. File baru yang belum dimasukkan ke staging tidak terlihat oleh git.
# You created a new file mid-feature
echo "temp work" > new-feature.js
git stash
# new-feature.js is still sitting there — stash ignored it entirely
Tambahkan -u untuk mencakup file yang tidak tercatat:
git stash push -u
Ada juga -a (--all) yang juga mencakup file yang diabaikan. Itu hampir tidak pernah apa yang Anda inginkan — itu akan menyimpan perubahan Anda dan node_modules file serta membuat pemulihan menjadi mimpi buruk. .env Berikan nama pada stashing sebelum Anda menyesal
Pesan default stashing adalah:
Itu tidak bermakna ketika Anda memiliki tiga stashing dari tiga fitur yang belum selesai. Gunakan
stash@{0}: WIP on main: a3f1c2d Update dependencies
untuk memberi nama: git stash push -m yang sebenarnya dapat dibaca:
git stash push -u -m "wip: oauth token refresh flow"
git stash push -u -m "experiment: lazy load images on scroll"
git stash push -u -m "fix: header z-index issue"
Sekarang git stash list Terapkan satu yang tertentu berdasarkan indeks:
stash@{0}: On main: fix: header z-index issue
stash@{1}: On feature/images: experiment: lazy load images on scroll
stash@{2}: On feature/auth: wip: oauth token refresh flow
Inspeksi sebelum Anda terapkan: stash show -p
git stash apply stash@{2} # brings back the auth work
memberikan ringkasan dari file yang berubah. Tambahkan
git stash show untuk perbedaan lengkap: -p Ini adalah perintah yang sering dilewatkan oleh orang-orang dan kemudian menyesal. Tanpa itu, Anda mengembalikan perubahan secara acak ke cabang yang mungkin telah berubah secara signifikan sejak Anda menyimpannya. Sebuah
git stash show -p stash@{2}
membutuhkan sepuluh detik dan memberi tahu Anda secara tepat apa yang akan Anda terapkan. show -p Jika Anda ingin membandingkan perbedaan stashing dengan keadaan saat ini dari sebuah file secara samping, tempelkan keduanya ke dalam
alat — lebih cepat daripada mengatur di kepala Anda. Bandingkan Teks terapkan vs pop: perbedaan satu yang benar-benar penting git diff stash@{N}..HEAD -- path/to/file Kedua perintah mengembalikan stashing Anda. Perbedaan kritis:
= terapkan + menghapus entri stashing
= terapkan, tetapkan entri stashing
git stash popJika Andagit stash applydan menemui konflik penggabungan, git menghapus entri stashing sebelum Anda menyelesaikannya. Sekarang Anda memiliki pohon kerja yang bermasalah dan tidak ada referensi stashing untuk jatuh kembali.
menyimpan entri tersebut saat Anda menyelesaikan konflik, lalu Anda bersihkan secara manual: pop Langkah tambahan ini layak ketika stashing mewakili jam-jam kerja.
apply Stashing parsial dengan –patch
# Safer workflow when conflicts are possible
git stash apply stash@{0}
# resolve any conflicts
git stash drop stash@{0} # explicit cleanup once you're happy
Kadang-kadang Anda hanya ingin menyimpan bagian dari perubahan Anda. Anda memiliki perbaikan bug dan setengah fitur baru dalam file yang sama, dan Anda ingin mengonfirmasi perbaikan sambil menyimpan kode fitur. drop ) membuka sesi interaktif per-hunk-per-hunk:
Untuk setiap hunk, Anda mendapatkan antarmuka yang sama seperti
. Ketik
git stash push --patch (atau -puntuk membagi hunk menjadi bagian-bagian lebih kecil jika pembagian otomatis git tidak cukup halus. Ini lebih lambat daripada stashing biasa, tetapi ini adalah cara terbaik untuk membagi pohon kerja yang kotor tanpa menciptakan cabang sementara.
git stash push -p -m "wip: new feature half"
Satu kekurangan: y/n/s/q mode tidak mencakup file yang tidak tercatat, sehingga Anda tidak bisa menggabungkannya dengan git add -p. Jika Anda memiliki file baru yang tidak tercatat yang merupakan bagian dari fitur yang Anda simpan, Anda perlu s dulu agar menjadi tercatat, lalu jalankan stashing parsial.
Kasus penggunaan nyata --patch Pengalihan konteks di tengah fitur. -uSeorang reviewer meninggalkan umpan balik mendesak pada PR lain saat Anda sedang terjun ke dalam kode yang belum selesai. Simpan dengan nama, beralih cabang, lakukan review, kembali dan pop. Tidak ada commit WIP, tidak ada gerakan cabang. git add Verifikasi jalannya uji bersih.
Anda ingin memastikan uji Anda berjalan dengan pohon kerja yang bersih — bukan dengan perubahan yang belum selesai secara tidak sengaja bocor ke lingkungan uji:
Ini menangkap kasus di mana uji berjalan hanya karena modifikasi lokal. Terjadi lebih sering daripada yang Anda pikirkan dalam repositori dengan fixture uji yang dibagikan. Pergantian cabang dengan pohon kerja yang bertentangan.
git stash push -u -m "wip: refactor auth middleware"
git checkout fix/urgent-prod-bug
# ... review and fix ...
git checkout feature/auth-refactor
git stash pop
Git menolak untuk mengeksekusi cabang saat pohon kerja Anda memiliki perubahan yang akan dihapus. Simpan terlebih dahulu, beralih, unstash. Lebih cepat daripada hanya untuk memindahkan cabang.
git stash push -u
npm test # or pytest, cargo test, whatever
git stash pop
daftar cepat git stash
Simpan perubahan yang tercatat (singkatan: Sertakan file yang tidak tercatat git commit --fixup Simpan dengan nama yang deskriptif
Tidak tercatat + bernama (kombinasi yang paling sering digunakan)
| Perintah | Apa yang dilakukan |
|---|---|
git stash push | Stashing parsial interaktif (per-hunk) git stash) |
git stash push -u | Daftar semua stashing |
git stash push -m "name" | Ringkasan file yang berubah dalam stashing |
git stash push -u -m "name" | Perbedaan lengkap dari stashing |
git stash push -p | Terapkan stashing, tetapkan entri |
git stash list | Terapkan stashing terbaru, hapus entri |
git stash show stash@{N} | Hapus entri stashing tertentu |
git stash show -p stash@{N} | Hapus semua entri stashing |
git stash apply stash@{N} | Buat cabang baru dari stashing dan terapkan |
git stash pop | Pintu keluar cabang stashing |
git stash drop stash@{N} | Satu perintah lagi yang perlu diketahui: |
git stash clear | . Ini menciptakan cabang baru pada komit di mana Anda menyimpan, menerapkan stashing, dan menghapusnya jika terapkan bersih. Ini adalah langkah yang tepat ketika perubahan yang disimpan telah besar cukup sehingga layak memiliki cabang sendiri — dan ini menghindari masalah konflik sepenuhnya karena Anda memperbarui stashing pada pohon yang tepat saat itu. |
git stash branch <branchname> | Kebiasaan yang memperbaiki 90% dari rasa sakit stashing: beri nama semua dengan |
, dan gunakan
hingga Anda yakin perubahan terintegrasi dengan baik. Langkah tambahan ini membutuhkan dua detik. Kehilangan stashing yang Anda butuhkan akan menghancurkan lebih banyak. git stash branch <branchname>git stash — Lebih dari Penyelamatan dari Kepanasan (Stashing Parsial, Nama Stashing, dan Sisanya 2
git stash — Lebih dari Penyelamatan dari Kepanasan (Stashing Parsial, Nama Stashing, dan Sisanya 1 -m, dan gunakan apply alih-alih pop hingga Anda yakin perubahan terintegrasi dengan baik. Langkah tambahan ini membutuhkan dua detik. Kehilangan stashing yang Anda butuhkan menguras biaya yang jauh lebih besar. drop langkah ini membutuhkan dua detik. Kehilangan stashing yang Anda butuhkan menguras biaya yang jauh lebih besar.
Instal Ekstensi Kami
Tambahkan alat IO ke browser favorit Anda untuk akses instan dan pencarian lebih cepat
恵 Papan Skor Telah Tiba!
Papan Skor adalah cara yang menyenangkan untuk melacak permainan Anda, semua data disimpan di browser Anda. Lebih banyak fitur akan segera hadir!
Alat Wajib Coba
Lihat semua Pendatang baru
Lihat semuaMemperbarui: Kita alat terbaru ditambahkan pada 15 Juni 2026
