Saya baru saja memutakhirkan ke magit 2.1.0. (Dan juga untuk emacs 25.0.50 dan git 2.3.1.)
Sebelumnya, di *magit*
buffer saya bisa:
- Pilih bingkah di area Unstaged.
- Ketik vdan jawab ya untuk membalikkannya.
Ini berguna.
Tapi sekarang di Magit 2.1.0 memberikan kesalahan: "Cannot reverse unstaged changes"
.
Mengapa?
Mengambil petunjuk dari pesan kesalahan, saya menemukan saya masih bisa melakukan ini, meskipun agak "mundur" dengan lebih banyak langkah:
- ssembunyikan bingkah itu. (Terasa mundur; bergerak lebih dekat ke keadaan berkomitmen.)
- Nav ke bawah dan pilih di area Tahapan.
- Tekan v, jawab ya.
- Namun cowok itu masih dipentaskan, jadi akhirnya aku harus unstage cowok itu.
Apakah ini bug, atau, apakah disengaja dan / atau saya padat? Jika yang terakhir, dapatkah Anda membantu saya memahami?
UPDATE: Setelah sepenuhnya melakukan RTFinfo, saya melihat bahwa ada dua perintah:
- v
magit-reverse
Balikkan perubahan pada titik di pohon kerja. - k
magit-discard
Hapus perubahan pada titik dari pohon kerja.
Tampaknya k magit-discard
melakukan apa yang biasa saya vlakukan sebelumnya. Itu bekerja pada cowok yang tidak dipentaskan.
Jadi praktis saya hanya perlu melatih memori otot saya untuk digunakan k. Saya bisa mempostingnya sebagai jawaban sendiri. Tapi kurasa aku masih penasaran dengan alasannya, karena aku membayangkan memahaminya akan membantuku memahami keseluruhan lebih baik.
k
membuang perubahan yang tidak dikomit di versi sebelumnya juga, dan tampaknya perintah yang sesuai untuk apa yang Anda lakukan.v
adalah untuk git revert: membuat komit baru yang membuat perubahan berlawanan dari yang sebelumnya. Saya kira mengembalikan suatu perubahan yang belum benar-benar dilakukan sama dengan membuangnya, tetapi 'kembalikan' memiliki arti khusus sebagai perintah git.v
terikatmagit-revert-item
(terminologi "terbalik" berasal dari sana, @PythonNut) dan untuk item yang tidak dipentaskan, ini digunakan untuk melakukanmagit-discard-item
(sebagaimana terikat jugak
) - lihat baris 4872 di sini . Tampaknya saya secara tidak sengaja mempelajari makna khusus dariv
, yang berhasil, ketika saya seharusnya belajar menggunakannyak
.Jawaban:
Magit mengimplementasikan lima "menerapkan varian" yang dijelaskan dalam manual : stage, unstage, "apply reguler", buang, dan balikkan. Tiga yang pertama harus cukup jelas bagi sebagian besar pengguna Git. Dua yang terakhir tidak ada di porselen Git (di Magit mereka diimplementasikan menggunakan perintah pipa Git dan Emacs Lisp).
Dua varian ini dijelaskan seperti ini:
Kedua varian ini melakukan hal-hal yang sangat berbeda, sehingga tidak satu pun dari varian ini yang dapat kembali ke varian lain jika tidak dapat digunakan. Menjaga perilaku lama (mundur dari mundur ke membuang dalam beberapa konteks) mungkin lebih nyaman dalam jangka pendek, tetapi dalam jangka panjang hal itu mencegah pengguna dari benar-benar mencoba memahami untuk apa kedua varian ini.
Buang jauh lebih berbahaya daripada terbalik . Yang pertama "membuang perubahan yang tidak dikomit" (perubahan ini hilang, mereka tidak lagi berada di tempat), sedangkan yang kedua sebenarnya "menciptakan perubahan", dengan mengambil perubahan yang lebih lama dan melakukan yang sebaliknya di worktree (perubahan lama tidak hilang, masih dalam komit atau indeks).
Jatuh dari "menciptakan" ke "menghapus" sangat berbahaya, jadi Magit tidak melakukan itu lagi.
Perhatikan juga dengan menggunakan mode wip baru Anda dapat melindungi diri dari kehilangan perubahan karena dibuang secara tidak sengaja.
sumber
Sepertinya saya secara tidak sengaja mengetahui bahwa v, tentu saja
magit-revert-item
, memang terbiasa melakukanmagit-discard-item
hal khusus tentang orang-orang tak berperforma yang baik. Lihat<=== HERE ===
komentar yang saya berikan di bawah ini:Sumber: kode 1.4.2 .
Tapi sekarang itu tidak terjadi:
Sumber: master :
Namun kterikat langsung ke
magit-discard-item
. Seharusnya aku belajar menggunakannya. Itu bekerja sebelum 2.1.0, dan masih berfungsi.Sebagai kesimpulan, magit 2.1.0 telah didesain ulang secara signifikan. Tidak dapat dihindari bahwa beberapa kasus sudut aneh mungkin tidak bertahan. Dan, saya setuju, tidak perlu selamat. Saya akan mempelajari kembali kuncinya.
sumber