Misalkan dua rangkaian perubahan dibuat dalam proyek yang diversi oleh git. Satu set dipentaskan dan yang lainnya tidak.
Saya ingin memeriksa ulang perubahan bertahap dengan menjalankan proyek saya pada keadaan ini (sebelum berkomitmen). Apa cara sederhana untuk menyingkirkan semua perubahan yang tidak dipentaskan dan membiarkannya hanya bertahap? Jadi saya perlu perubahan yang tidak bertahap untuk menghilang dari proyek saya, tetapi disimpan di suatu tempat untuk pekerjaan lebih lanjut.
Ini terdengar sangat mirip dengan git stash
perintah. Tapi git stash
akan menyingkirkan perubahan yang tidak dipentaskan dan bertahap dari proyek saya. Dan saya tidak dapat menemukan yang seperti itu git stash uncached
.
-k
opsi) atau tidak praktis untuk digunakan.Jawaban:
Pembaruan 2:
Saya tidak yakin mengapa orang mengeluh tentang jawaban ini, tampaknya berfungsi dengan baik dengan saya, untuk file yang tidak ditangani Anda dapat menambahkan
-u
benderaPerintah lengkapnya menjadi
git stash --keep-index -u
Dan inilah cuplikan dari
git-stash
bantuan tersebutDan ini adalah gif tampilannya:
Memperbarui:
Meskipun ini adalah jawaban yang dipilih, banyak yang menunjukkan bahwa [jawaban di bawah] (https://stackoverflow.com/a/34681302/292408) adalah yang benar, saya sarankan untuk memeriksanya.Saya menguji jawaban saya lagi hari ini (31/1/2020) terhadap versi git
2.24.0
, dan saya masih percaya bahwa itu benar, saya menambahkan catatan kecil di atas tentang file yang tidak terlacak. Jika menurut Anda itu tidak berfungsi, sebutkan juga versi git Anda.Jawaban lama :
Jika
--keep-index
opsi digunakan, semua perubahan yang sudah ditambahkan ke indeks dibiarkan utuh:Dari dokumentasi
git-stash
:Tetapi, jika Anda hanya ingin memeriksa perubahan bertahap secara visual saja, Anda dapat mencoba
difftool
:sumber
git stash [-p|--patch]
yang terasa seperti penyimpanan interaktif. Dariman git stash
"Dengan --patch, Anda dapat secara interaktif memilih hunks dari perbedaan antara HEAD dan pohon kerja yang akan disimpan."add -p
,checkout -p
danreset -p
, tidak pernah mencobastash -p
, terima kasih atas tipnya: DJawaban yang diterima juga menyembunyikan perubahan yang dipentaskan seperti yang ditunjukkan oleh beberapa orang. Berikut adalah cara untuk melakukannya tanpa mendapatkan perubahan bertahap Anda di simpanan.
Idenya adalah untuk melakukan komit sementara dari perubahan bertahap Anda, lalu menyimpan perubahan yang tidak bertahap, lalu batalkan komit sementara:
Pada titik ini, Anda akan memiliki simpanan perubahan yang tidak bertahap dan hanya akan memiliki perubahan bertahap yang ada dalam copy pekerjaan Anda.
sumber
--keep-index
pilihan dalam jawaban yang diterima saat ini masih stashes apa yang ada di indeks, itu hanya juga menyimpannya dalam indeks. Jadi kemudian digandakan, dan keriuhan pun terjadi.git add .
Langkah mungkin ingin ditingkatkan olehgit add --all
karena itu harus ambil file dalam direktori di atas direktori kerja saat ini juga.Saya menemukan jawaban yang ditandai tidak berhasil untuk saya karena saya membutuhkan sesuatu yang benar-benar hanya menyembunyikan perubahan saya yang tidak dipentaskan. Jawaban yang ditandai,,
git stash --keep-index
menyembunyikan perubahan yang dipentaskan dan yang tidak dipentaskan. Bagian tersebut--keep-index
hanya membiarkan indeks tetap utuh pada copy pekerjaan juga. Itu berfungsi untuk OP, tetapi hanya karena dia mengajukan pertanyaan yang sedikit berbeda dari yang sebenarnya dia inginkan jawabannya.Satu-satunya cara yang benar yang saya temukan untuk menyembunyikan perubahan tidak bertahap adalah dengan tidak menggunakan simpanan sama sekali:
git checkout -- .
juga akan berfungsi sebagai penggantiapply -R
.Kerja kerja kerja...
sumber
git version 2.6.1.windows.1
,git stash -k
bekerja seperti yang dijelaskan.Git: Simpan perubahan yang tidak diatur
Ini akan menyembunyikan semua modifikasi yang tidak Anda tambahkan:
Perhatikan bahwa file yang baru dibuat (dan tidak ditambahkan) akan tetap berada di direktori kerja Anda kecuali Anda juga menggunakan
-u
sakelar.Juga, direktori kerja Anda harus bersih (yaitu semua perubahan perlu ditambahkan) ketika Anda git stash pop nanti.
http://makandracards.com/makandra/853-git-stash-unstaged-changes
sumber
git stash --keep-index
. File bertahap disertakan dalam simpanan.