Setelah melihat yang berikut dari baris perintah:
# On branch RB_3.0.10
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.htm
Saya mencoba membuang perubahan saya dengan mengetik perintah:
git checkout -- index.htm
tetapi ketika saya menjalankan kembali status git, tampilannya sama persis. Kasir sepertinya tidak berfungsi. Apakah saya melakukan sesuatu yang salah? Saya menggunakan GIT 1.6.1.2 di windows / cygwin.
# On branch RB_3.0.10
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.htm
git checkout HEAD -- index.htm
(memeriksa dari status komitmen terakhir, alih-alih memeriksa dari indeks) berfungsi?git checkout HEAD -- index.htm
berhasil untuk saya!Jawaban:
Ini telah mengganggu saya untuk sementara waktu, hampir setiap repo yang saya periksa memiliki perubahan yang tidak dapat saya buang. Singkat cerita, saya mencoba semua hal di atas, tidak ada yang berhasil. Inilah yang saya lakukan untuk mengembalikan semuanya ke normal (di Mac):
sumber
Inilah pengalaman saya, atur variabel berikut di
.git/config
:lalu lari
$ git checkout HEAD .
, dan berhasil. tapi$ git checkout -- .
tidak, aneh!* git versi 1.9.3
sumber
Perubahan apa yang
git diff
ditampilkan di file? Di windows, saya telah melihat masalah dengan ujung baris yang menyebabkan masalah seperti ini. Dalam hal ini, lihat pengaturan apa yang Anda miliki untukgit config core.autocrlf
dangit config core.safecrlf
. Ada beberapa dokumentasi untuk pengaturan ini di sini .Saya akan mengatakan, jika Anda menggunakan
git svn
untuk integrasi dengan subversi, maka pastikanautocrlf
dimatikan. Dari apa yang saya tahu itu hanya rusak dalam konfigurasi ini dan itu membuat sebagian besar alat mengira file telah diubah, ketika Anda telah melakukancheckout
untuk mengembalikan perubahan apa pun.Jika Anda melihat masalah di mana Anda melakukannya
git checkout
, dan kemudiangit status
menunjukkan bahwa file masih dimodifikasi, dangit diff
menunjukkan bahwa file tersebut dimodifikasi pada setiap baris dalam file, maka ini adalah masalah yang Anda lihat.sumber
Saya pikir Anda harus lulus
-f
Dari halaman manual (
man git-checkout
, GIT-CHECKOUT (1)):Misalnya, buang perubahan pada cabang saat ini dan beralihlah ke cabang lain:
sumber
-f
ke checkout - <filename> seperti dalamgit checkout -f -- filename
-f
git checkout -f master
melemparkan "Already on 'master'" tetapi perubahannya hilang.Ini mungkin akhir baris, seperti yang disarankan @ 1800-information, tetapi kemungkinan lain adalah bahwa perbedaannya (yang mencegah Anda mengembalikan file ini dengan perintah checkout) adalah salah satu mode file. Inilah yang terjadi pada saya. Di versi git saya, Anda dapat menemukannya dengan menggunakan
Dan itu akan menunjukkan kepada Anda perubahan mode file. Itu tetap tidak akan membiarkan Anda mengembalikannya, menggunakan checkout, bahkan dengan opsi -f. Untuk penggunaan itu juga
atau ubah git .config Anda di editor teks dengan menambahkan
Setelah Anda melakukan ini, Anda dapat menggunakan
dan file tersebut akan hilang.
(Saya mendapatkan semua ini dari jawaban untuk Bagaimana cara membuat perubahan mode abaikan git (chmod)? Dan memperbarui-file-izin-hanya-dalam-git )
sumber
Apakah Anda pengguna OSX atau Windows? Jika demikian, masalahnya mungkin memiliki dua file dengan nama yang sama, dengan kasus yang berbeda. misalnya. index.htm dan Index.htm
Windows, dan secara default OSX, menggunakan sistem file tidak peka huruf besar / kecil, yang bertentangan dengan huruf besar dan kecil.
sumber
Saya mengalami masalah ini dan setelah mencoba semua hal di atas, tidak ada yang berhasil.
Apa yang berhasil bagi saya adalah menghapus direktori tempat file itu berada, lalu melakukan
git status
dan memastikan bahwa semua file di direktori itu sekarang ditandai sebagai dihapus. Setelah itu saya langsung melakukannyagit checkout -f
dan semuanya kembali normal.sumber
Saya sedang mengerjakan sebuah
libGDX
proyekAndroid Studio
dan saya ingin membuang semua perubahan yang telah saya lakukan, dan tidak ada yang berhasil untuk saya, solusi yang saya dapatkan adalah melakukan semua perubahan ke cabang barudan kemudian Anda dapat menghapus
TRASH
cabang tersebut jika Anda mau.sumber
Saya memiliki masalah yang sama, tidak ada dari komentar di atas yang berhasil. Ternyata, filesystem saya tidak case sensitive (osx default, tetapi windows mungkin berperilaku sama) dan sebuah file hadir dengan huruf besar dan kecil di direktori yang sama, dengan konten yang berbeda. Karena di komputer saya kedua nama menunjuk ke file yang sama, status git selalu menunjukkan modifikasi, apa pun yang saya lakukan. Untuk mengatasi masalah tersebut:
Saya harus menghapus salah satu file dari komputer lain dan mendorongnya ke repo
hapus seluruh versi lokal sepenuhnya
lakukan git clone dari awal
sumber
Saya mengalami masalah serupa, yang tidak mengizinkan saya untuk membuang file yang tidak ada atau telah diubah. Saya menggunakan Visual Studio di tempat kerja, dan saya menemukan bahwa ini terjadi saat berpindah cabang saat aplikasi sedang berjalan.
git checkout
dan mencoba membuang tidak membantu. Itu tidak akan berhasil atau hanya akan memberi tahu saya bahwa saya tidak memiliki izin.Solusi yang berhasil:
Memulai ulang memang menyebalkan, tetapi ini bekerja lebih cepat daripada mencoba 100 hal.
sumber
Ada solusi yang mudah. Jika ini terjadi (biasanya dari shutdown windows yang tidak terduga atau memory dump) dan Anda tidak dapat membuang perubahan Anda dan bahkan berpindah antar cabang (Git mengatakan Anda tidak memiliki cukup izin); di
Windows
lingkunganshow all hidden files and folders
dari opsi folder. Buka direktori GIT Anda (harus dimulai dengan.git
) dan hapus"index.lock"
file. Maka Git akan membiarkan Anda melakukan apa pun yang Anda ingin lakukan.sumber
Saya akhirnya melakukan
git stash
diikuti dengangit stash clean
untuk menyingkirkan beberapa. Tidak melihat konfigurasi cr / lf otomatis dalam hal .git / atau ~ / .git.sumber
Dalam kasus saya, saya tidak dapat membuang perubahan yang terkait dengan direktori. misalnya ketika saya menjalankan git diff, saya akan melihat ini:
-Subproject commit fdcccccccccccccccccccccccccccccccccccccc +Subproject commit f1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Jadi saya memanggil direktori itu dan menjalankan status git di sana. Itu dalam kondisi HEAD terlepas. Dan kemudian saya berlari
git checkout master
ke sana. Itu membuat segalanya benar untuk saya. Tapi ini tidak membantu untuk skenario persis yang ditanyakan di sini.sumber
Ini adalah pertanyaan lama, tapi masih relevan bagi saya. Saya tidak menemukan jawaban saya sampai bertanya di sekitar kantor, dan menemukan bahwa masalahnya ada pada submodul. Ketika mereka diperbarui, dan repositori Anda sendiri tidak mencerminkan perubahan itu, itu muncul sebagai memiliki perbedaan, mengatur ulang head tidak membantu. Jika ini masalahnya, jalankan:
Itu akan membantu memperbaiki berbagai hal (dalam kasus khusus ini)
sumber
Saya memiliki masalah izin di Windows dan harus melakukannya
icacls containingFolder /reset /t /l /c
dan kemudian klik dua kali folder tersebut untuk mendapatkan izin saya kembali.sumber
Saya memiliki .gitattributes dengan konten berikut:
* text=auto eol=lf
Untuk mengatasi masalah ini, edit
.gitattributes
untuk menghapus baris ini yang melonggarkan akhir baris. Kemudiangit reset --hard HEAD
mengembalikan file dan.gitattributes
file.sumber
Bagi saya masalah ini muncul dengan kombinasi pengunduhan gambar Git-LFS yang diunggah melalui Netlify CMS dan disajikan secara berbeda oleh penangan Netlify Large Media mereka.
Solusi saya adalah mengomentari / menghapus baris ini dari saya
~/.gitconfig
sehingga terlihat seperti di bawah ini, dan kemudian periksagit status
lagi.ATAU Anda mungkin dapat menambahkan lebih banyak filter lokal melalui a
.gitconfig
di root repo dan entah bagaimana menimpa aturan filter untuk lfs di sana.Semoga ini bisa membantu sesama.
sumber
Saya juga menghadapi masalah yang agak mirip dan langkah-langkah berikut membantu saya:
Semoga bisa membantu orang lain juga.
sumber