Untuk mengembalikan satu berkas dari stash di macOS, gunakan git restore dengan stash sebagai sumbernya dan jalur berkas sebagai targetnya. Tindakan ini memulihkan berkas tersebut ke pohon kerja (working tree) Anda tanpa menghapus entri stash yang ada. Pertama, tentukan stash yang tepat dan periksa perubahannya; kemudian pulihkan jalur spesifik tersebut dan tinjau hasilnya.

1. Buka Terminal di repositori

Buka Terminal dari Spotlight atau folder Aplikasi/Utilitas (Applications/Utilities) di Finder, lalu beralihlah ke direktori repositori menggunakan cd. Sebagai contoh, ketik cd , seret folder proyek ke dalam jendela Terminal untuk memasukkan jalurnya, lalu tekan Return. Apple mendokumentasikan Terminal sebagai antarmuka baris perintah (command-line interface) macOS; zsh adalah shell default-nya, meskipun administrator atau pengguna dapat mengonfigurasi shell lain. Membuka atau keluar dari Terminal di Mac

Pastikan Anda berada di repositori yang dituju dan lihat perubahan lokal sebelum memulihkan apa pun:

git status --short

Memulihkan dari stash dapat menimpa isi pohon kerja berkas target saat ini, jadi simpan atau commit setiap pengeditan pada berkas tersebut yang ingin Anda pertahankan. Operasi ini bersifat selektif berdasarkan jalur, tetapi ini bukan penggabungan (merge) atau cadangan pengaman (safety backup).

2. Temukan dan periksa stash

Tampilkan daftar entri yang tersedia:

git stash list

Git melabeli entri terbaru dengan stash@{0}, berikutnya stash@{1}, dan seterusnya. Pilih entri yang memuat versi yang Anda inginkan. Jika deskripsinya kurang jelas, periksa kandidatnya sebagai patch:

git stash show --patch 'stash@{0}'

Ganti stash@{0} dengan entri yang telah Anda tentukan. Memberi tanda kutip pada referensi ini sangat berguna di zsh karena tanda kurung kurawal memiliki sintaks shell khusus. Git mendokumentasikan stash show untuk memeriksa stash dan stash apply untuk menerapkan seluruh entri; sebaliknya, perintah di bawah ini memilih satu jalur saja dari snapshot stash. Dokumentasi git-stash

3. Pulihkan berkas itu saja

Jalankan git restore dengan referensi stash sebagai sumber dan jalur relatif terhadap repositori setelah --:

git restore --source='stash@{0}' -- 'src/config.json'

Ganti src/config.json dengan jalur persis yang Anda butuhkan, menggunakan garis miring (forward slash) dan ditulis secara relatif terhadap direktori root repositori. Tanda kutip juga mencegah spasi dan karakter wildcard diinterpretasikan oleh shell. Opsi --source memilih commit atau tree sebagai sumber konten; pathspec membatasi jalur mana yang dipulihkan oleh Git. Karena --staged diabaikan, Git akan memulihkan pohon kerja dan membiarkan indeks apa adanya. Dokumentasi git-restore

Sekarang tinjau perubahannya:

git status --short
git diff -- 'src/config.json'

Versi yang dipulihkan umumnya merupakan perubahan pohon kerja yang belum masuk tahap unstaged relatif terhadap indeks. Jika berkas tersebut sebelumnya sudah di-stage, bandingkan versi pohon kerja dan versi indeks dengan cermat sebelum melakukan staging atau commit. Stash akan tetap berada dalam daftar stash karena git restore hanya membaca darinya tanpa menerapkan atau menghapus seluruh entri.

Kapan alur kerja ini perlu disesuaikan

Jalur tersebut harus ada di dalam snapshot pohon kerja stash. Jika tidak, Git mungkin melaporkan bahwa pathspec tidak cocok; periksa patch dan nama berkas, termasuk huruf besar-kecilnya. Jalur terlacak yang tidak ada di pohon sumber mungkin akan dihapus agar target sesuai dengan pohon tersebut, jadi berhati-hatilah terutama jika stash mencatat sebuah penghapusan. Dokumentasi restore Git menjelaskan perilaku ini. Dokumentasi git-restore

Panduan ini ditujukan untuk berkas yang terdapat di dalam snapshot pohon kerja terlacak milik stash. Stash yang dibuat dengan -u atau -a juga dapat memuat berkas yang tidak terlacak (untracked) atau diabaikan (ignored), yang disimpan secara terpisah; git restore --source='stash@{0}' tidak memperlakukan snapshot terpisah tersebut seolah-olah merupakan pohon stash utama. Periksa entri semacam itu secara saksama dan gunakan kontrol pemeriksaan serta pemulihan stash yang terdokumentasi di Git daripada menganggap perintah ini akan mengambilnya. Dokumentasi git-stash

Jika tujuannya adalah menerapkan baris-baris tertentu dan bukan keseluruhan berkas, git restore -p menawarkan pemilihan potongan (hunk) interaktif, tetapi pastikan perilaku dan sumbernya untuk versi Git yang Anda gunakan sebelum mengandalkannya. Untuk memulihkan berkas baik pada versi staged maupun pohon kerja, git restore mendukung --staged dan --worktree; ini juga akan mengubah indeks, jadi gunakan hanya jika itu yang Anda kehendaki. Dokumentasi git-restore

Urutan praktisnya adalah: tentukan stash, pastikan berkas ada di dalam isinya, pulihkan satu jalur relatif terhadap repositori dari stash yang dipilih, dan periksa diff sebelum melanjutkan. Hal itu menjaga stash tetap utuh dan membatasi operasi pemulihan hanya pada jalur yang Anda sebutkan.

Sumber