Saya sering menunda pekerjaan untuk nanti, kemudian hal-hal lain datang, dan beberapa minggu kemudian, saya ingin memeriksa simpanan, dan mencari tahu perubahan apa yang akan terjadi jika saya menerapkannya pada pohon yang berfungsi dalam kondisi saat ini.
Saya tahu saya bisa melakukan git diff pada simpanan, tetapi ini menunjukkan kepada saya semua perbedaan antara pohon yang bekerja dan simpanan, sedangkan saya hanya tertarik untuk mengetahui apa yang berlaku untuk simpanan simpanan akan berubah.
Bagaimana saya bisa melakukan ini?
git stash show -p stash@{1} >~/.diff && vim ~/.diff
(tidak harusvim
. editor teks apa pun selama editor teks Anda memiliki sintaks yang menyoroti dukungan untukdiff
output).Jawaban:
git stash show
akan menampilkan file-file yang diubah di simpanan terbaru Anda. Anda dapat menambahkan-p
opsi untuk menampilkan perbedaan.Jika simpanan yang Anda minati bukan yang terbaru, maka tambahkan nama simpanan ke akhir perintah:
sumber
fatal: unable to create temp-file: Invalid argument
- tahu mengapa?git stash show -p stash@{0}
untuk melihat simpanan tertentu. 0 menunjukkan nada terakhir, 1 yang terakhir terakhir .. dll.git stash list
Akan menampilkan semua yang tersedia.git stash show -p 'stash@{0}'
)git stash show -p stash@{0}> stash.txt
Untuk melihat daftar simpanan saat ini:
Anda akan melihat daftar seperti ini:
Untuk melihat perbedaan pada salah satu simpanan tersebut:
sumber
Saya penggemar
gitk
grafis UI untuk memvisualisasikan git repos. Anda dapat melihat item terakhir yang disimpan dengan:Anda juga dapat menggunakan tampilan perubahan simpanan Anda (sebagaimana didaftar oleh
git stash list
). Sebagai contoh:Di tangkapan layar di bawah, Anda dapat melihat simpanan sebagai komit di kiri atas, kapan dan dari mana asalnya dalam komit, daftar file yang dimodifikasi di kanan bawah, dan perbedaan baris per baris di bawah -kiri. Semua sementara simpanan masih tersimpan.
sumber
stash@{X}
nilai pada baris perintah untuk melihat hasil lebih banyak sekaligus, tetapi saya belum menemukan cara sederhana untuk hanya mengatakan 'tampilkan semua entri simpanan' di gitk.gitk stash
tampaknya menjadi singkatan untukgitk stash@{0}
gitk `git stash list --pretty=format:%gd`
dan kemudian mencari "WIP aktif" untuk melompat ke simpanan berikutnya.gitk --reflog
memungkinkan Anda melihat semua simpanan, dan banyak lagi.Untuk melihat semua perubahan dalam simpanan yang tidak muncul:
Untuk melihat perubahan satu file tertentu dalam simpanan yang tidak muncul:
sumber
-p
kependekan dari--patch
. Pilihannya berasalgit-diff
. Jika Anda lebih suka bentuk panjang, Anda dapat menulisgit stash show --patch
.Di luar rekomendasi gitk di Apakah mungkin untuk melihat pratinjau konten simpanan di git? Anda dapat menginstal tig dan menelepon
tig stash
. Program konsol bebas / terbuka ini juga memungkinkan Anda memilih simpanan mana yang akan dibandingkansumber
P
dan!
tombol masing-masing.gitk
itu relatif mudah untuk meretasnya untuk menunjukkan semua simpanan .Saya menggunakan ini untuk melihat semua simpanan saya dengan sorotan perbedaan warna (pada Fedora 21):
(Diadaptasi dari Git: lihat apa yang ada di simpanan tanpa menerapkan simpanan )
sumber
Ketika pertanyaan ini pertama kali ditanyakan, ini mungkin bukan opsi, tetapi, jika Anda menggunakan PyCharm, Anda dapat menggunakan
UnStash Changes
alat (VCS-> Git-> UnStash Changes ...). Ini memungkinkan Anda untuk melihat daftar perubahan simpanan, serta pop, drop, hapus, atau terapkan (ke cabang baru jika diinginkan):dan melihat file yang diubah per simpanan:
serta diffs per file. Di difs Anda dapat memilih perubahan individu untuk diterapkan dari perubahan simpanan ke cabang kerja (menggunakan chevron menunjuk kiri):
sumber
Anda dapat melihat daftar semua simpanan dengan perintah berikut:
Stash terbaru adalah yang pertama.
Anda cukup memilih indeks
n
simpanan yang disediakan dalam daftar di atas dan menggunakan perintah berikut untuk melihat detail simpananDemikian pula,
Anda juga dapat memeriksa beda dengan menggunakan perintah:
sumber
ya cara terbaik untuk melihat apa yang diubah adalah menyimpan dalam file seperti itu:
sumber
Pertama kita dapat menggunakan daftar simpanan git untuk mendapatkan semua item simpanan:
Kemudian kita dapat menggunakan
git stash show stash@{N}
untuk memeriksa file di bawah simpanan tertentuN
. Jika kita memecatnya maka kita bisa mendapatkan:Alasan untuk ini mungkin karena cangkang memakan kawat gigi keriting dan git melihat
stash@2
dan tidakstash@{2}
. Dan untuk memperbaikinya kita perlu menggunakan tanda kutip tunggal untuk kawat gigi sebagai:sumber
Lihat daftar perubahan yang disembunyikan
Untuk melihat daftar file diubah dalam simpanan tertentu
Untuk melihat file tertentu dalam simpanan
sumber
Tampilkan semua simpanan
Hanya nama file:
Isi file lengkap di semua simpanan:
Anda akan mendapatkan hasil keluaran berwarna yang dapat Anda buat halaman space ( maju ) dan b( mundur ), dan quntuk menutup halaman untuk simpanan saat ini. Jika Anda lebih suka memilikinya dalam file kemudian tambahkan
> stashes.diff
ke perintah.sumber
Sebagai tambahan untuk jawaban yang ada yang menyarankan penggunaan (untuk menunjukkan perbedaan simpanan ketiga hingga terakhir)
Perhatikan bahwa dalam
git-stash
dokumentasi , tertulis ituKarena itu juga dimungkinkan untuk digunakan (ini setara dengan perintah di atas)
Yang juga harus menghindari beberapa masalah Powershell .
sumber
Saya suka bagaimana
gitk
bisa menunjukkan kepada Anda apa yang tidak terlacak atau duduk di indeks, tetapi secara default itu akan menunjukkan simpanan "komit" di tengah semua komit Anda lainnya di cabang saat ini.Caranya adalah dengan menjalankan gitk sebagai berikut:
(Kutipan ada di sana untuk membuatnya bekerja di Powershell tetapi dengan cara ini ia tetap bekerja di kulit lain juga.)
Jika Anda mencari sintaks ini di halaman bantuan gitrevisions Anda akan menemukan yang berikut:
Ini tampaknya akan menempatkan gitk dalam mode sehingga hanya orang tua langsung dari komit terpilih yang ditampilkan, yang persis seperti yang saya sukai.
Jika Anda ingin mengambil ini lebih lanjut dan daftar semua simpanan maka Anda dapat menjalankan ini:
(Kutipan tunggal di dalam backticks diperlukan untuk menenangkan Bash, jika tidak, akan mengeluh tentang tanda seru)
Jika Anda menggunakan Windows dan menggunakan cmd atau Powershell:
sumber
Perintah berikut ini dapat digunakan untuk mengekstrak perbedaan perubahan yang disimpan lagi sebelum simpanan lain atau komit atau cabang atau KEPALA.
Mari kita lihat, bagaimana kita dapat menggunakan masing-masing perintah yang disebutkan di atas.
Untuk mendapatkan perbedaan antara sebagian besar simpanan paling tinggi @ {0} dan cabang utama:
master $ git diff simpanan @ {0}
Hanya tampilkan nama file, bukan perubahan:
$ git diff --name-only stash @ {0} master
Lihat perbedaan antara simpanan yang dipilih untuk file yang dipilih:
$ git beda simpanan @ {0} ^ 1 simpanan @ {0} -
Lihat perbedaan antara dua simpanan terbaru:
$ git difftool stash @ {0} stash @ {0} ^ 1
git difftool --dir-diff simpanan @ {0} simpanan @ {0} ^ 1
Ringkasan:
Perintah-perintah yang berguna untuk mengekstraksi diff dari stash git show terpilih, git show, git diff, git difftool.
Lihat perbedaan menggunakan perintah git stash show,
pertunjukan git simpanan -p simpanan @ {0}
Lihat perubahan dalam simpanan menggunakan perintah git show,
git show stash @ {1}
Lihat perbedaan antara simpanan terbaru dan komit terpilih menggunakan perintah git diff,
git beda simpanan @ {0}
Referensi:
https://howto.lintel.in/how-to-see-stashed-changes-using-git-stash/
https://git-scm.com/docs/git-show
https://git-scm.com/docs/git-stash
sumber