Pertanyaan Git diff melawan simpanan


Bagaimana saya bisa melihat perubahan un-stashing akan membuat pohon kerja saat ini? Saya ingin tahu perubahan apa yang akan dilakukan sebelum menerapkannya!


976
2017-10-06 16:48


asal


Jawaban:


Lihat simpanan terbaru:

git stash show -p

Lihat simpanan acak:

git stash show -p stash@{1}

Dari git stash manpages:

Secara default, perintah menunjukkan diffstat, tetapi ia akan menerima apa pun   format yang dikenal dengan git diff (mis., git stash show -p stash @ {1} untuk dilihat   simpanan terakhir kedua dalam bentuk patch).


1348
2017-10-06 16:50



Untuk melihat simpanan terbaru:

git stash show -p

Untuk melihat simpanan acak:

git stash show -p stash@{1}

Juga, saya menggunakan git diff untuk membandingkan simpanan dengan cabang apa saja.

Kamu dapat memakai:

git diff stash@{0} master

Untuk melihat semua perubahan dibandingkan dengan master cabang.


Atau Anda dapat menggunakan:

git diff --name-only stash@{0} master

Untuk mudah menemukan hanya mengubah nama file.


239
2017-07-26 14:33



Jika cabang yang Anda ubah berdasarkan perubahan telah berubah untuk sementara waktu, perintah ini mungkin berguna:

git diff stash@{0}^!

Ini membandingkan simpanan terhadap komitmen itu didasarkan pada.


77
2018-03-27 13:23



Jika pohon kerja Anda kotor, Anda dapat membandingkannya dengan simpanan dengan terlebih dahulu melakukan pohon kerja yang kotor, dan kemudian membandingkannya dengan simpanan. Setelah itu, Anda dapat membatalkan komit dengan pohon kerja yang kotor (karena Anda mungkin tidak ingin kotor melakukan dalam log commit Anda).

Anda juga dapat menggunakan pendekatan berikut untuk membandingkan dua simpanan dengan satu sama lain (dalam hal ini Anda hanya perlu mencabut salah satu simpanan).

  • Komit pohon kerja kotor Anda:

    git add .
    git commit -m "Dirty commit"
    
  • Diff simpanan dengan komit itu:

    git diff HEAD stash@{0}
    
  • Kemudian, setelah itu, Anda dapat mengembalikan komit, dan mengembalikannya ke direktori kerja:

    git reset --soft HEAD~1
    git reset .
    

Sekarang Anda telah memisahkan pohon kerja kotor dengan simpanan Anda, dan kembali ke tempat Anda semula.


30
2018-01-21 13:33



Ini bekerja untuk saya di git versi 1.8.5.2:

git diff stash HEAD

16
2018-01-22 23:36



Jawaban @ Magne adalah satu-satunya untuk (sangat terlambat) tanggal yang menjawab interpretasi yang paling fleksibel / berguna dari pertanyaan, tetapi sedikit lebih rumit daripada yang diperlukan. Daripada melakukan dan mengatur ulang, cukup salin copy pekerjaan Anda, bandingkan, lalu hapus.

git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop

Itu menunjukkan Anda perbedaan antara bagian atas tumpukan simpanan dan folder kerja Anda dengan sementara membuat folder kerja Anda mengubah bagian atas tumpukan simpanan (simpanan @ {}}, memindahkan asli atas ke bawah (simpanan @ {1}) kemudian bandingkan menggunakan top asli di posisi 'set baru' sehingga Anda melihat perubahan yang akan dihasilkan dari menerapkannya di atas pekerjaan Anda saat ini.

"Tapi bagaimana kalau aku tidak punya pekerjaan saat ini?"  Maka Anda berada dalam kasus membosankan yang normal. Cukup gunakan jawaban @ Amber

git stash show

atau jawaban @ czerasz

git diff stash@{0}

atau akui bahwa mencuri dan unstashing itu cepat dan mudah, hanya tidak mengganti perubahan dan memeriksanya. Jika Anda tidak ingin mereka membuangnya saat ini (indeks / folder kerja saat ini berubah). Secara penuh itu

git stash apply
git diff
git reset
git checkout

13
2018-06-28 16:13



Jika Anda memiliki alat untuk diff (seperti luar biasa)

git difftool stash HEAD

9
2017-09-09 08:08