Saya mencoba memperbarui repo saya dari cabang jarak jauh dan terus mendapatkan kesalahan ini ketika saya melakukan "git pull". Saya belum membuat perubahan lokal apa pun, dan bahkan jika saya memilikinya, saya tidak perlu menyimpannya.
Saya sudah mencoba:
git reset --hard
dan saya mendapatkan masalah yang sama
Satu-satunya hal yang tampaknya berhasil adalah menghapus file yang melanggar dan mencoba git pull lagi.
Saya juga sudah mencoba git stash
diikuti dengan a git pull
. Tidak pergi.
edit: menggunakan PortableGit-1.6.4-preview20090729 sehingga setiap bug sebelumnya dengan kesalahan palsu harus diperbaiki.
git rm --cached learned/tests/temp_funcs.py
- Karena saya tetap ingin file tetap dalam daftar File yang Tidak Dilacak ,git rm --cached
dalam kasus ini tidak diblokir saya.--abort
. Tidak ada solusi yang diusulkan yang memungkinkan saya untuk membatalkan, kecuali untuk menghapus file yang melanggar.Jawaban:
Ada beberapa cara untuk memperbaikinya, tetapi saya telah menemukan git simpanan berfungsi baik untuk saya. Ini sementara menempatkan perubahan lokal Anda ke tempat lain. Kemudian Anda dapat menarik, untuk mengambil perubahan terbaru. Dan kemudian Anda bisa mendapatkan perubahan lokal Anda kembali.
Seperti ini:
sumber
git rm --cached
, komentar lengkap: stackoverflow.com/questions/1248029/…Ini mungkin terjadi jika Anda memperbarui indeks untuk mengabaikan file tertentu:
dan kemudian misalnya memeriksa beberapa cabang lain:
Memaksa penyegaran indeks memperbaiki masalah:
Diikuti oleh:
Dan kemudian semuanya harus kembali normal.
sumber
git rm --cached learned/tests/temp_funcs.py
- Karena saya tetap ingin file tetap dalam daftar File yang Tidak Dilacak ,git rm --cached
dalam kasus ini tidak diblokir saya.git update-index --really-refresh
adalah bagian yang hilang! Kerja bagus, ini sulit ditemukanMasalah semacam ini sering kali disebabkan oleh mencoba menarik dari repositori yang memiliki dua nama file yang hanya berbeda dalam kasus. Jika Anda menggunakan FAT, NTFS dalam mode case-insensitive (pada dasarnya, kapan pun itu digunakan pada Windows), atau HFS + dalam mode case-insensitive, dan memiliki dua file "foobar" dan "FOOBAR", maka Git akan melihat dua yang berbeda file, tetapi sistem file hanya akan melihat satu file, yang akan menyebabkan berbagai macam masalah. Git akan melakukan checkout, katakanlah, "FOOBAR", dan kemudian "foobar", yang dilihat oleh filesystem hanya dengan mengganti konten "FOOBAR" tetapi membiarkannya di tempatnya. Sekarang bagi Git, tampaknya "FOOBAR" telah diganti dengan konten "foobar", dan "foobar" telah hilang.
Ada dua manifestasi berbeda dari masalah dasar ini. Salah satunya adalah ketika repositori Anda sebenarnya berisi dua file yang hanya berbeda dalam kasus. Dalam kasus ini, Anda perlu bekerja pada sistem file case-sensitive, atau Anda perlu mengedit repositori untuk memastikan bahwa tidak ada benturan semacam ini yang terjadi; sistem file case-insensitive tidak dapat menyimpan konten repositori ini.
Kasus lain yang dapat Anda atasi adalah saat terjadi penggantian nama yang mengubah kasus file. Misalnya, repositori Git berisi penggantian nama dari "EXAMPLE" menjadi "example". Sebelum Git memeriksa versi baru, Git akan mencoba dan memeriksa untuk memastikan itu tidak menimpa beberapa file yang ada yang Anda miliki di disk Anda. Karena ia mengira bahwa "contoh" adalah nama file baru, ia akan menanyakan sistem berkas apakah itu ada, dan sistem berkas akan melihat "CONTOH" dan berkata ya, jadi Git akan menolak untuk memeriksa versi baru karena menurutnya itu akan menimpa file yang tidak terlacak. Dalam hal ini, jika Anda tidak memiliki perubahan lokal yang Anda pedulikan, sederhana
git reset --hard <revision-to-checkout>
umumnya akan cukup untuk membuat Anda melewati masalah dan ke revisi baru. Coba dan ingat untuk tidak mengganti nama file ke nama lain yang berbeda hanya jika Anda menggunakan sistem file yang tidak peka huruf besar / kecil, karena akan menyebabkan masalah seperti ini.sumber
Untuk uraian lebih lanjut tentang posting @Brian Campbell (karena reset keras juga tidak berhasil) saya ingin menunjukkan kasus tepi yang menghentikan saya.
Saya telah memindahkan file
OldFile
ke folder lain dan mengganti namanyaNewFile
. Saya kemudian menandai file tersebut sebagaiassume-unchanged
.Ini mencegah saya untuk berpindah cabang dan tidak ada simpanan untuk disimpan atau berkomitmen untuk didorong. Masalahnya adalah saya tidak melakukan perubahan file ini dengan nama baru sebelum menyetel
assume-unchanged
bendera. Jadi saya setel kembali keno-assume-unchanged
, lakukan, lalu setel kembali keassume-unchanged
dan saya bisa beralih cabang lagi.sumber
checkout -f
, itu akan gagal.Secara umum, ini berarti Anda memiliki perubahan dalam file lokal Anda yang belum dikomit ke repositori lokal Anda. Anda juga dapat melihat pertanyaan stackoverflow ini untuk sedikit lebih detail.
sumber
Saya melihat masalah serupa (Windows 10): Saya aktif
branchA
dan ingin pergimaster
. Saya memiliki beberapa perubahan tidak terikat jadi pertama sayagit stash
kemudiangit checkout -f master
tapi saya masih mendapatkanEntry 'fileName' not uptodate. Cannot merge
.git status
tidak menunjukkan apa pun untuk dilakukan.Akhirnya saya menghapus file secara manual dan saya bisa pergi ke cabang lain (yang tentu saja membuat file saya kembali) jadi saya rasa ada bug di dalam git di suatu tempat.
sumber
.gitignore
file! Meskipun saya belum membuat perubahan apa pun padanya, dan git tidak mengizinkan saya untuk "menyimpannya" (karena tidak ada perubahan lokal, ya!). Jadi saya memindahkan.gitignore
file ke luar repositori (sebagai semacam "backup") dan kemudian melakukangit reset --hard
, yang "memperbaiki" repositori ke dalam keadaan waras.git status
menunjukkan kepada saya file mana yang diubah dan mengisyaratkan bahwa saya dapat menggunakangit restore myFile
alih-alih menghapusnya, yang berfungsi.Mungkin juga ada masalah dengan izin file. Git juga membuat versinya, kecuali config mengatakan sebaliknya. Hanya menambahkan jawaban ini untuk orang yang hampir tetapi tidak memiliki masalah suka.
sumber
Patut dicoba:
Bisakah Anda menyetel, hanya untuk pembaruan ini, menyetel parameter config
core.trustctime
ke false?sumber
Menambahkan jawaban saya karena tidak ada yang lain yang menyebutkan ini. Dalam kasus saya ini terjadi setelah saya menambahkan file baru ke dalam indeks dengan
-N
bendera, jadi tambahkan saja ke indeks tanpa menambahkan isinya. Dalam keadaan ini, melakukangit stash
menghasilkan kesalahan ini.sumber
Saya mengalami kesalahan yang sama, setelah situasi di mana
git status
dikatakannew file: foo.cpp
untuk file tidak ditambahkan ke area pementasan. yaitu di bawah tajuk "Perubahan tidak dipentaskan untuk berkomitmen". Sangat aneh, ini biasanya tidak terjadi.Solusi:,
git add foo.cpp
lalugit stash
bekerja lagi.sumber
Saya mencoba melakukan git merge --abort. Perintah git restore your_file telah memperbaiki masalah saya
sumber