Lewati ke konten utama
Git

Penjelasan Git Stash: Menyimpan, Memulihkan, dan Mengelola Perubahan

Pelajari cara menggunakan git stash untuk menyimpan, memeriksa, memulihkan, dan mengelola perubahan. Pahami selective stashing, perbaikan konflik, dan praktik terbaik untuk alur kerja yang bersih.
Allan Ouko's photo
Allan Ouko
Diperbarui · 9 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Buat Akun Gratis Anda

Berlatih dan lacak kemajuan Anda.

Lanjutkan Dengan Google
Dengan melanjutkan, Anda menerima Ketentuan Penggunaan kami, Kebijakan Privasi kami dan bahwa data Anda disimpan di Amerika Serikat.

Anda sedang mengerjakan sebuah fitur baru di pipeline data ketika laporan bug mendesak masuk. Direktori kerja Anda penuh dengan perubahan yang belum selesai. Anda belum siap melakukan commit, tetapi perlu segera beralih cabang.

Dalam tutorial ini, saya akan menunjukkan cara menggunakan seluruh rangkaian perintah git stash. Anda akan mempelajari cara menyimpan, memeriksa, memulihkan, melakukan stash selektif, dan merapikan stash di Git. Untuk pembelajaran lebih lanjut, saya sarankan mengikuti Introduction to GitHub Concepts untuk mempelajari lebih banyak tentang kontrol versi dan bekerja dengan repository di GitHub.

Apa Itu Git stash?

git stash adalah perintah Git yang sementara menaruh perubahan Anda yang belum di-commit sehingga Anda dapat kembali ke direktori kerja yang bersih, tanpa membuat commit Git. Ini memudahkan beralih cabang atau menangani pekerjaan mendesak tanpa kehilangan progres.

Stash disimpan dalam tumpukan LIFO (last-in, first-out). Stash terbaru selalu stash@{0}, diikuti stash@{1}, dan seterusnya.

Secara default, git stash menyimpan file terpantau yang telah diubah dan perubahan yang sudah di-stage (dari index). Namun, ini tidak termasuk file baru yang tidak terpantau dan file yang diabaikan seperti yang ada di .gitignore.

Cara Menyimpan Perubahan dengan git stash

Di bagian ini, saya akan memandu Anda melalui tiga cara umum untuk melakukan stash perubahan. Kita akan menggunakan skenario yang konsisten: anggap Anda bekerja pada proyek pipeline data dengan file data_pipeline.py, config.yaml, dan tests/test_pipeline.py.

Stash perubahan yang terpantau

Karena git stash menyimpan perubahan yang dimodifikasi atau di-stage, jalankan git status untuk memeriksa status file di direktori kerja Anda. Setelah menjalankan git stash, baik perubahan terpantau yang di-stage maupun yang belum di-stage akan disimpan, sehingga Anda memiliki direktori kerja yang bersih.

Cara menggunakan git stash untuk men-stash perubahan yang terpantau.

Sertakan perubahan yang tidak terpantau dan file baru

Secara default, git stash mengabaikan file yang belum pernah ditambahkan ke repository. Jika Anda membuat file pengujian baru, stash standar akan membiarkannya tetap berada di direktori Anda, yang dapat menimbulkan masalah saat beralih cabang.

Cara menggunakan git status untuk memeriksa kondisi direktori kerja saat ini.

Jika Anda menjalankan git stash, file itu akan tetap ada. Untuk menyertakannya, gunakan perintah -u atau --include-untracked:

git stash -u

Cara menyertakan perubahan yang tidak terpantau dan file baru menggunakan git stash.

Untuk menyertakan semua file, termasuk yang diabaikan secara eksplisit oleh .gitignore, Anda dapat menggunakan git stash --all atau -a. Namun, Anda harus berhati-hati, karena ini dapat menyapu file seperti log atau artefak build tanpa sengaja.

Beri nama pada stash Anda

Saat menggunakan git stash, pesan default seperti WIP on main akan membingungkan jika Anda memiliki banyak stash. Untuk menghindari masalah ini, selalu tambahkan pesan deskriptif saat Anda ingin push stash tersebut.

git stash push -m "refactor pipeline config handling."

Anda dapat menggunakan perintah git stash list untuk melihat dan membandingkan daftar stash. Perhatikan perbedaan antara stash yang diberi nama dan stash default.

Cara memberi nama pada stash menggunakan pesan deskriptif.

Menggunakan pesan yang jelas membuatnya jauh lebih mudah mengidentifikasi stash yang tepat nanti, terutama saat menangani banyak tugas atau berkolaborasi dengan tim.

Saya merekomendasikan mencoba GitHub Foundations dan Git Fundamentals untuk mempelajari kontrol versi dengan Git dari dasar hingga alur kerja tingkat lanjut, termasuk melacak perubahan, mengelola repository, dan berkolaborasi secara efisien.

Cara Melihat dan Memeriksa Stash Anda

Sebelum menerapkan stash secara membabi buta, penting untuk memverifikasi isinya. Langkah ini sering dilewatkan, tetapi membantu mencegah kebingungan atau penimpaan yang tidak disengaja.

git stash list: Daftar semua stash

Gunakan perintah berikut untuk melihat tumpukan stash Anda:

git stash list

Cara menampilkan semua stash menggunakan git stash list.

Sekarang Anda seharusnya tahu bahwa stash mengikuti urutan LIFO (last-in, first-out). Stash terbaru selalu stash@{0}, dan setiap stash baru mendorong yang lebih lama turun di tumpukan.

git stash show: Memeriksa stash sebelum menerapkan

Untuk ringkasan cepat perubahan dalam sebuah stash, Anda dapat menggunakan perintah show pada stash tertentu. Misalnya, perintah di bawah menampilkan perubahan yang dibuat pada stash terbaru:

git stash show stash@{0}

Cara memeriksa stash sebelum menerapkan perubahan.

Untuk melihat perubahan kode yang sebenarnya (diff penuh), gunakan perintah di bawah untuk menampilkan semua perubahan baris demi baris yang disimpan dalam stash tersebut.

git stash show -p stash@{0}

Cara memeriksa perubahan kode aktual dari sebuah stash sebelum menerapkan perubahan.

Sebagai praktik terbaik, selalu periksa stash sebelum menerapkannya, terutama jika sudah beberapa hari atau Anda tidak yakin isinya.

Cara Memulihkan Perubahan yang Di-stash

Setelah Anda menyimpan pekerjaan dengan git stash, Anda memerlukan cara untuk mengembalikannya. Ada dua metode utama untuk memulihkan stash, termasuk cara menargetkan stash tertentu berdasarkan indeksnya.

git stash pop: terapkan dan hapus

Ini adalah cara paling umum untuk memulihkan stash. Ini mengambil stash teratas (stash@{0}), menerapkan perubahan ke cabang saat ini, lalu menghapus stash tersebut dari tumpukan.

git stash pop

Cara memulihkan dan menghapus stash menggunakan git stash pop.

Setelah menjalankan pop, perubahan Anda dipulihkan, dan stash dihapus. Karena itu, gunakan pop saat Anda yakin telah selesai dengan status tersimpan tersebut dan ingin menjaga daftar stash tetap rapi.

Untuk pemahaman lebih mendalam tentang perintah pop, saya sarankan melihat tutorial Git Stash Pop untuk mempelajari cara menyimpan pekerjaan yang belum di-commit saat beralih cabang di repo Anda.

git stash apply: terapkan dan pertahankan

Jika Anda ingin memulihkan perubahan tetapi mempertahankan stash untuk digunakan ulang, gunakan perintah apply sebagai berikut:

git stash apply stash@{1}

Cara memulihkan stash dan mempertahankannya menggunakan git stash apply.

Perhatikan bahwa merujuk stash berdasarkan indeks stash@{1} menargetkan stash tertentu untuk dipulihkan. Metode ini berguna saat Anda ingin menerapkan perubahan yang sama di beberapa cabang, seperti penyesuaian konfigurasi bersama yang perlu masuk ke main dan staging.

Anda dapat menggunakan git stash list untuk memastikan stash masih ada setelah menggunakan perintah apply.

Cara menampilkan semua stash menggunakan git stash list.

Cara Melakukan Stash secara Selektif

Dalam proyek dunia nyata, perubahan Anda sering tercampur. Untuk skenario seperti itu, Anda mungkin ingin men-stash hanya sebagian pekerjaan sambil mempertahankan sisanya. Git menyediakan dua metode untuk kontrol yang lebih rinci.

git stash push -m: Stash file tertentu

Jika Anda tahu persis file mana yang perlu disisihkan, Anda dapat men-stash hanya file yang dipilih dengan menentukan path-nya:

Sebagai contoh, perintah di bawah hanya men-stash file data_pipeline.py. Ini berguna saat Anda ingin menghentikan sementara pekerjaan pada fitur eksperimental sambil mempertahankan perbaikan bug yang di-stage dan siap di-commit.

git stash push -m "stash experimental pipeline logic" data_pipeline.py

Untuk memeriksa apakah perintah Anda berhasil dieksekusi, gunakan git status untuk menampilkan kondisi sebelum dan sesudah repo Anda.

Cara men-stash file tertentu menggunakan Git.

git stash push -p -m: Stash hunk tertentu secara interaktif

Terkadang, Anda memiliki kode “baik” dan kode “WIP” dalam file yang sama. Dalam kasus ini, gunakan flag -p atau --patch untuk memicu sesi interaktif. Ini memungkinkan Anda memilih potongan (“hunk”) perubahan tertentu dalam sebuah file.

git stash push -p -m "Selective stash of pipeline logic"

Cara men-stash hunk tertentu secara interaktif.

Anda akan melihat keluaran “Stash this hunk” dengan opsi berikut:

  • y: Ya, stash hunk ini

  • n: Tidak, lewati hunk ini

  • q: Keluar; jangan men-stash hunk ini atau yang tersisa.

  • a: Semua; stash hunk ini dan semua hunk berikutnya di file.

  • d: Hapus; jangan men-stash hunk ini atau hunk berikutnya di file.

  • ?: bantuan

Perlu dicatat bahwa alur kerja ini sangat mirip dengan git add -p. Ini berguna saat perubahan dalam file yang sama tidak saling terkait dan perlu ditangani secara terpisah.

Cara Merapikan Stash Anda

Stash dimaksudkan untuk berumur pendek. Jika dibiarkan menumpuk, akan lebih sulit menemukan yang tepat nanti, dan meningkatkan risiko konflik saat akhirnya Anda menerapkannya.

git stash drop: Hapus stash tertentu

Untuk menghapus satu stash, gunakan git stash drop dengan indeksnya. Misalnya, perintah di bawah menghapus stash ke-4 dalam daftar.

git stash drop stash@{3}

Cara menghapus stash tertentu menggunakan indeksnya.

Dari contoh di atas, Anda dapat melihat daftar stash berkurang, dan stash yang tersisa diindeks ulang setelah penghapusan.

git stash clear: Hapus semua stash

Untuk menghapus semua stash sekaligus, gunakan:

git stash clear

Perintah ini tidak menghasilkan keluaran saat berhasil, dan Anda dapat memverifikasi dengan menjalankan git stash list.

Cara menghapus semua stash menggunakan git stash clear.

Saya sarankan Anda ekstra hati-hati saat menggunakan git stash clear karena tindakan ini permanen dan tidak ada fitur undo bawaan. Jalankan hanya ketika Anda yakin tidak lagi membutuhkan pekerjaan yang di-stash.

git stash branch: Ubah stash menjadi cabang

Jika cabang Anda saat ini telah banyak berdivergensi sejak Anda membuat stash, menerapkannya dapat menyebabkan konflik merge. Dalam kasus itu, Anda dapat membuat cabang baru langsung dari stash:

git stash branch pipeline-fix stash@{1}

Cara mengubah stash menjadi cabang menggunakan git stash branch.

Perintah di atas melakukan hal-hal berikut:

  • Membuat cabang baru dari commit asli tempat stash dibuat
  • Menerapkan stash
  • Menghapusnya dari daftar stash

Saya sarankan melihat tutorial Git Branch untuk mempelajari lebih lanjut pengelolaan cabang demi pengembangan dan kolaborasi yang lebih baik.

Perintah Git Stash Lain yang Perlu Diketahui

Di luar alur kerja umum, berikut adalah beberapa perintah git stash tingkat lanjut yang perlu Anda ketahui:

  • git stash create: Membuat objek stash tanpa menambahkannya ke daftar stash

  • git stash store: Menyimpan stash yang dibuat dengan create

  • git stash export: Mengekspor stash ke sebuah referensi atau mencetaknya

  • git stash import: Mengimpor stash dari commit yang ada

Kesalahan Umum dan Cara Memperbaikinya

Meskipun git stash sederhana, beberapa masalah umum bisa menjegal Anda. Berikut beberapa kesalahan yang pernah saya temui serta cara mengenali dan memperbaikinya dengan cepat.

No local changes to save

Ini adalah “bukan error” yang paling sering. Terjadi saat Anda menjalankan git stash pada direktori kerja yang bersih di mana tidak ada file terpantau yang diubah atau di-stage.

Untuk memperbaiki masalah ini, jalankan git status, dan jika tidak ada yang muncul, berarti tidak ada yang perlu di-stash.

Cara mengatasi "No local changes to save" di git stash.

Konflik saat menerapkan stash

Konflik terjadi ketika cabang tempat Anda berada mengubah baris kode yang sama yang ada di stash Anda. Misalnya, saat Anda menjalankan git stash pop di cabang baru setelah memodifikasi file, Anda kemungkinan akan mendapatkan pesan error:

Konflik merge saat menerapkan stash.

Anda kemudian mungkin melihat penanda konflik di dalam file:

Penanda konflik dalam file yang tidak terpantau.

Untuk memperbaiki masalah ini, Anda dapat melakukan salah satu dari berikut:

  • Menyelesaikan konflik secara manual di file
  • Stage file yang sudah diselesaikan
git add data_pipeline.py
  • Hapus stash secara manual menggunakan git stash drop (jika TIDAK dihapus otomatis saat konflik)

Jika konflik terlalu berantakan, gunakan perintah di bawah untuk menerapkan perubahan ke “kanvas” yang bersih sebagai gantinya.

git stash branch recovery-branch stash@{0}

Tidak sengaja men-stash file yang tidak Anda maksud

Terkadang Anda menjalankan git stash tanpa memeriksa direktori kerja, baru menyadari kemudian bahwa Anda telah menyembunyikan perbaikan yang sebenarnya ingin di-commit.

Untuk menghindari kesalahan semacam itu, selalu jelaskan file mana yang akan di-stash. Misalnya, perintah di bawah hanya akan men-stash file data_pipeline.py alih-alih semuanya di direktori kerja.

git stash push data_pipeline.py

Anda juga dapat menggunakan git stash -p untuk menjalankan mode interaktif (patch), memungkinkan Anda men-stash bagian perubahan secara selektif dalam file, bukan seluruh file.

Sebagai langkah pencegahan, selalu periksa git status sebelum melakukan stash.

Kesimpulan

Sebagai pedoman umum, buat stash berumur pendek dan selalu gunakan pesan yang deskriptif. Jika Anda tidak akan kembali ke pekerjaan itu dalam sehari, membuat cabang WIP adalah opsi yang lebih aman karena dapat di-push ke remote dan tidak akan hilang.

Untuk membangun keterampilan Git yang lebih kuat, saya sarankan mengambil Intermediate Git untuk mempelajari kolaborasi di Git. Saya juga merekomendasikan Advanced Git untuk mempelajari cara bekerja dengan Git untuk proyek besar dan menangani skenario kontrol versi yang kompleks serta isu dalam pengembangan pipeline data.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Penulis teknis Data Science dengan pengalaman langsung dalam analitik data, business intelligence, dan data science. Saya menulis konten praktis berfokus industri tentang SQL, Python, Power BI, Databricks, dan rekayasa data, yang berakar pada pekerjaan analitik dunia nyata. Tulisan saya menjembatani kedalaman teknis dan dampak bisnis, membantu para profesional mengubah data menjadi keputusan yang meyakinkan.

FAQ Git Stash

Apakah git stash menyimpan file yang tidak terpantau?

Tidak, secara default, git stash hanya menyimpan file yang terpantau. Untuk menyertakan file yang tidak terpantau, gunakan git stash -u.

Apakah git stash memengaruhi riwayat commit saya?

Tidak, stash terpisah dari riwayat commit Anda dan tidak muncul di log cabang Anda.

Apa perbedaan antara git stash pop dan git stash apply?

git stash pop menerapkan stash dan menghapusnya, sedangkan git stash apply menerapkan stash tetapi mempertahankannya di daftar stash.

Mengapa Git mengatakan “No local changes to save”?

Masalah ini terjadi ketika direktori kerja Anda bersih, tidak ada file terpantau yang diubah atau di-stage untuk di-stash.

Apa yang menyebabkan konflik saat memulihkan stash?

Konflik terjadi ketika bagian file yang sama telah diubah baik di cabang Anda saat ini maupun di perubahan yang di-stash.

Topik
Git

Pelajari Git dengan DataCamp

Kursus

Git Tingkat Menengah

2 jam
44.2K
Temukan cabang dan repositori jarak jauh untuk pengendalian versi dalam proyek perangkat lunak dan data kolaboratif menggunakan Git!
Lihat DetailMulai Kursus

Program

Dasar-Dasar Git

7 jam
Pelajari pengendalian versi dengan Git, mulai dari dasar hingga alur kerja tingkat lanjut. Lacak perubahan, kelola repositori, dan kolaborasi secara efisien.

Buat Akun Gratis Anda

Berlatih dan lacak kemajuan Anda.

Lanjutkan Dengan Google
Dengan melanjutkan, Anda menerima Ketentuan Penggunaan kami, Kebijakan Privasi kami dan bahwa data Anda disimpan di Amerika Serikat.
Lihat Selengkapnya
Terkait

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Selengkapnya