Saya ingin melakukan alur kerja berikut:
- Tambahkan perubahan ke panggung.
- Simpan semua perubahan lain yang tidak dipentaskan.
- Lakukan beberapa hal dengan hal-hal di panggung (yaitu membangun, menjalankan tes, dll)
- Terapkan simpanan.
Apakah ada cara untuk melakukan langkah 2?
Contoh
echo "123" > foo
git add foo # Assumes this is a git directory
echo "456" >> foo
git stash
cat foo # Should yield 123
man git stash
jauh lebih baik.Jawaban:
git stash save
memiliki opsi--keep-index
yang melakukan apa yang Anda butuhkan.Jadi, lari
git stash save --keep-index
.sumber
save
dengangit stash
. Mungkin itu adalah programmer di saya bersikeras menghormati simetri dengan apply / pop. :)git stash save
adalah ia meninggalkan perubahan yang sudah dipentaskan dalam copy pekerjaan Anda juga. Dalam alur kerja di atas ini akan berfungsi dengan baik karena Anda hanya menerapkan simpanan di atas salinan lokal yang sudah memiliki setengah dari perubahan simpanan (yang git cukup pintar untuk diabaikan). Tetapi jika Anda mengedit kode sebelum menerapkan kembali simpanan, Anda berpotensi melihat konflik penggabungan saat Anda mendaftar. Fyi.git commit --ammend
jika ada masalah dalam apa yang saya lakukan.--amend
(alih-alih--ammend
)Ini dapat dilakukan dalam 3 langkah: menyimpan perubahan bertahap, menyimpan semuanya, mengembalikan indeks dengan perubahan bertahap. Yang pada dasarnya adalah:
Ini akan melakukan apa yang Anda inginkan.
sumber
-u
juga menyimpan file yang tidak terlacak.git stash save --keep-index
dilakukan dengan lebih banyak pekerjaan. Saya tidak melihat keuntungan apa pun.Juga, Re:
A: Karena Anda harus selalu checkin kode yang diuji :) Itu berarti, Anda harus menjalankan tes dengan hanya perubahan yang akan Anda lakukan
Semua ini terlepas dari fakta bahwa tentu saja, sebagai programmer yang berpengalaman, Anda memiliki keinginan bawaan untuk menguji dan meninjau hanya perubahan-perubahan itu - hanya sebagian bercanda
sumber
Dengan
git version 2.7.4
Anda dapat melakukan:The
git
akan meminta Anda untuk menambahkan atau tidak perubahan dalam simpanan.Dan Anda hanya menjawab
y
ataun
Anda dapat mengembalikan direktori kerja seperti biasa:
atau, jika Anda ingin menyimpan perubahan yang disimpan di simpanan:
sumber
Memperluas jawaban sebelumnya, saya terkadang memiliki serangkaian perubahan yang rumit, tetapi ingin melakukan perubahan yang terpisah terlebih dahulu. Misalnya, saya mungkin telah melihat bug atau kode yang salah yang ingin saya perbaiki sebelum perubahan bertahap saya. Salah satu rute yang mungkin ditempuh adalah:
sembunyikan dulu semuanya, tapi biarkan perubahan bertahap
sekarang menyimpan perubahan bertahap juga
buat perubahan untuk perbaikan; dan uji; komit pada mereka:
sekarang kembalikan perubahan yang dipentaskan sebelumnya:
menyelesaikan konflik, dan perhatikan bahwa jika ada konflik, git akan menerapkan tetapi tidak menjatuhkan entri simpanan teratas itu.
(... Kemudian komit perubahan bertahap, dan kembalikan simpanan semua perubahan lainnya, dan lanjutkan ...)
sumber
Untuk menambahkan file tidak bertanda (tidak ditambahkan untuk melakukan) ke simpanan, jalankan perintah berikut:
Kemudian Anda dapat melakukan file yang dipentaskan. Setelah itu Anda bisa mendapatkan kembali file simpanan terakhir menggunakan perintah:
sumber
Menyimpan hanya pohon kerja (perubahan yang tidak dipentaskan) di Git lebih sulit dari yang seharusnya. Jawaban yang diterima menyembunyikan perubahan yang tidak dipentaskan , tetapi juga menyembunyikan perubahan yang dipentaskan (dan membiarkannya juga dipentaskan), yang jarang seperti yang Anda inginkan.
Alias ini berfungsi dengan baik:
Itu melakukan perubahan bertahap, membuat simpanan dari perubahan yang tersisa (dan memungkinkan argumen tambahan seperti
--include-untracked
dan--message
diteruskan sebagai argumen alias), dan kemudian mengatur ulang komit sementara untuk mendapatkan kembali perubahan bertahap.Ini mirip dengan jawaban @Simon Knapp , tetapi dengan beberapa perbedaan kecil - ini digunakan
--quiet
pada tindakan sementara yang diambil, dan menerima sejumlah parameter untuk simpananpush
, daripada mengkode-m
, dan menambahkan--soft
ke final reset sehingga indeks tetap seperti semula.Untuk masalah sebaliknya menyimpan hanya perubahan bertahap (alias
stash-index
) lihat jawaban ini .sumber
Kiat lain, terkait dengan pertanyaan:
Ketika Anda secara efektif menyimpan perubahan yang tidak bertahap menggunakan
Anda mungkin ingin memberikan simpanan pesan, sehingga ketika Anda melakukan a
git stash list
itu lebih jelas apa yang telah Anda simpanan sebelumnya, terutama jika Anda mengikuti operasi simpanan dengan menyimpan lebih lanjut. Sebagai contoh(walaupun sebenarnya itu memang berisi semua perubahan seperti dicatat dalam jawaban lain).
Misalnya, hal di atas dapat segera diikuti oleh:
Namun berhati-hatilah bahwa Anda tidak dapat menggunakannya
untuk mengembalikan hanya perubahan yang tidak dipentaskan.
sumber
Git tidak memiliki perintah yang menyembunyikan hanya perubahan yang tidak dipentaskan.
Git tidak, bagaimanapun, membiarkan Anda menentukan file mana yang ingin Anda simpanan.
Jika Anda hanya ingin menyembunyikan perubahan spesifik pada file-file itu, tambahkan
--patch
opsi.The
--include-untracked
pilihan memungkinkan Anda menyimpan file yang tidak terlacak.Jalankan
git help stash
(atauman git-stash
) untuk info lebih lanjut.Catatan: Jika perubahan yang tidak Anda lakukan agak disogan, jawaban @ alesguzik mungkin lebih mudah.
sumber
Bentuk modern dari perintah itu adalah
git stash push [--] [<pathspec>...]
, karena Git 2.16+ (git stash save
sudah usang )Anda dapat menggabungkannya dengan formulir wildcard, misalnya:
Tapi itu tidak bekerja dengan baik dengan Git untuk Windows, sampai Git 2.22 (Q2 2019), lihat edisi 2037 , mengingat
git stash
telah diimplementasikan kembali di C (bukan skrip shell)Lihat komit 7db9302 (11 Mar 2019) oleh Thomas Gummerer (
tgummerer
) .Lihat komit 1366c78 , komit 7b556aa (07 Mar 2019) oleh Johannes Schindelin (
dscho
) .(Digabung oleh Junio C Hamano -
gitster
- dalam commit 0ba1ba4 , 22 Apr 2019)sumber
Saya menggunakan alias, yang menerima string untuk digunakan sebagai pesan ke entri simpanan.
Yang:
-u
atau-a
),--soft
untuk menyimpannya dalam indeks).sumber