Pertanyaan Bagaimana saya menunjukkan perubahan yang telah dipentaskan?


Saya melakukan beberapa perubahan untuk dilakukan; bagaimana saya bisa melihat diff dari semua file yang dipentaskan untuk commit berikutnya? Saya sadar status git, tapi saya ingin melihat diff yang sebenarnya - bukan hanya nama-nama file yang dipentaskan.

Saya melihat bahwa git-diff (1) halaman manual mengatakan

git diff [--options] [-] […]

Formulir ini untuk melihat perubahan yang Anda buat relatif terhadap indeks (area pementasan untuk commit berikutnya). Dengan kata lain, perbedaannya adalah apa yang Anda bisa beri tahu git untuk menambahkan lebih lanjut ke indeks tetapi Anda masih belum. Anda dapat memunculkan perubahan ini dengan menggunakan git-add (1).

Sayangnya, saya tidak bisa memahami ini. Harus ada satu liner yang bisa saya buatkan alias, kan?


1694
2017-10-19 09:57


asal


Jawaban:


Seharusnya hanya:

git diff --cached

--cached berarti menunjukkan perubahan dalam cache / indeks (yaitu perubahan bertahap) terhadap arus HEAD. --staged adalah sinonim untuk --cached.

--staged dan --cached tidak menunjuk ke HEAD, hanya perbedaan sehubungan dengan HEAD. Jika Anda memilih apa yang harus dilakukan git add --patch (atau git add -p), --staged akan mengembalikan apa yang dipentaskan.


2095
2017-10-19 10:07



Grafik sederhana membuat ini lebih jelas:

Simple Git diffs

git diff

Menunjukkan perubahan antara direktori kerja dan indeks. Ini menunjukkan apa yang telah diubah, tetapi tidak dipentaskan untuk komit.

git diff --cached

Memperlihatkan perubahan antara indeks dan HEAD (yang merupakan commit terakhir pada cabang ini). Ini menunjukkan apa yang telah ditambahkan ke indeks dan dipentaskan untuk komit.

git diff HEAD

Memperlihatkan semua perubahan antara direktori kerja dan HEAD (yang mencakup perubahan indeks). Ini menunjukkan semua perubahan sejak commit terakhir, apakah mereka telah dipentaskan atau tidak.

Juga:

Ada sedikit detail lebih lanjut 365Git.


1410
2017-10-24 21:05



Jika Anda tertarik pada tampilan sisi-demi-sisi visual, maka membaur alat diff visual dapat melakukannya. Ia bahkan akan menampilkan tiga panel jika beberapa tetapi tidak semua perubahan dipentaskan. Dalam kasus konflik, bahkan akan ada empat panel.

Screenshot of diffuse with staged and unstaged edits

Ajak dia

diffuse -m

dalam copy pekerjaan Git Anda.

Jika Anda bertanya kepada saya, visual terbaik berbeda yang pernah saya lihat selama satu dekade. Juga, itu tidak khusus untuk Git: Ini interoperate dengan kebanyakan VCS lain, termasuk SVN, Mercurial, Bazaar, ...

Lihat juga: Tunjukkan baik dipentaskan & bekerja pohon di git diff?


51
2018-03-18 07:22



Perhatikan itu git status -v  juga menunjukkan perubahan bertahap! (artinya Anda harus melakukan pementasan - git add -- Beberapa perubahan. Tidak ada perubahan bertahap, tidak ada perbedaan dengan git status -v.
Itu sejak itu Git 1.2.0, Februari 2006)

Dalam bentuk panjangnya (default), git status memiliki opsi "verbose" tidak berdokumen yang benar-benar menampilkan diff antara HEAD dan indeks.

Dan ini akan menjadi lebih lengkap: lihat "Tunjukkan baik dipentaskan & bekerja pohon di git diff?"(git 2.3.4+, Q2 2015):

git status -v -v

37
2017-08-31 10:05



Anda dapat menggunakan perintah ini.

git diff --cached --name-only

Itu --cachedopsi dari git diff berarti mendapatkan file bertahap, dan --name-only opsi berarti hanya mendapatkan nama-nama file.


22
2017-07-19 17:39



Dari versi 1.7 dan lebih baru, seharusnya:

git diff --staged

14
2017-08-14 23:33



MENGGUNAKAN ALAT DIFF VISUAL

Jawaban Default (pada baris perintah)

Jawaban teratas di sini dengan benar menunjukkan cara melihat perubahan dalam cache / bertahap di Index:

$ git diff --cached

atau $ git diff --staged yang merupakan alias.


Meluncurkan Visual Diff Tool

Jawaban default akan memuntahkan perubahan diff pada git bash (yaitu pada baris perintah atau di konsol). Bagi mereka yang lebih memilih representasi visual dari perbedaan file bertahap, ada skrip yang tersedia di git yang meluncurkan alat diff visual untuk setiap file yang dilihat daripada menampilkannya pada baris perintah, yang disebut difftool:

$ git difftool --staged

Ini akan melakukan hal yang sama seperti ini git diff --staged, kecuali setiap kali alat diff dijalankan (yaitu setiap kali file diproses oleh diff), itu akan meluncurkan alat diff visual standar (di lingkungan saya, ini adalah kdiff3).

Setelah alat diluncurkan, skrip git diff akan berhenti sementara hingga alat diff visual Anda tertutup. Oleh karena itu, Anda harus menutup setiap file untuk melihat yang berikutnya.


Anda Selalu Bisa Menggunakan difftool di tempat diff dalam perintah git

Untuk semua kebutuhan diff visual Anda, git difftool akan berfungsi sebagai pengganti git diff perintah, termasuk semua opsi.

Sebagai contoh, untuk memiliki peluncuran alat diff visual tanpa bertanya apakah akan melakukannya untuk setiap file, tambahkan -y pilihan (saya pikir biasanya Anda akan menginginkan ini !!):

$ git difftool -y --staged

Dalam hal ini, akan menarik setiap file dalam alat diff visual, satu per satu, memunculkan yang berikutnya setelah alat ditutup.

Atau untuk melihat diff dari file tertentu yang dipentaskan di Index:

$ git difftool -y --staged <<relative path/filename>>

Untuk semua opsi, lihat halaman manual:

$ git difftool --help


Menyiapkan Alat Git Visual

Untuk menggunakan alat visual git selain dari default, gunakan -t <tool> pilihan:

$ git difftool -t <tool> <<other args>>

Atau, lihat halaman manual difftool untuk cara mengkonfigurasi git untuk menggunakan alat diff visual standar yang berbeda.


10
2018-03-14 14:30