Untuk beberapa alasan, ketika saya awalnya melakukan penarikan dari repositori untuk proyek git milik saya, saya mendapat banyak file dalam copy pekerjaan saya yang tidak memiliki perubahan yang terlihat, tetapi tetap muncul di unstaged changes
area saya .
Saya menggunakan Git Gui di Windows xp, dan ketika saya pergi untuk melihat file untuk melihat apa yang telah berubah. Yang saya lihat adalah:
old mode 100755
new mode 100644
Adakah yang tahu apa artinya ini?
Bagaimana saya bisa mengeluarkan file-file ini dari daftar perubahan yang tidak dipentaskan? (Sangat menjengkelkan harus melalui 100-an file, hanya untuk memilih file yang baru-baru ini saya edit dan ingin komit).
git update-index --chmod=(+|-)x <path>
.git config --global ...
untuk mengatur opsi di file konfigurasi global Anda.Pengaturan
core.filemode
ke false tidak berfungsi, tetapi pastikan pengaturan di~/.gitconfig
tidak ditimpa oleh pengaturan masuk.git/config
.sumber
~/.gitconfig
file!git config --list --show-origin | sls filemode
atau di Linuxgit config --list --show-origin | grep filemode
. Ini akan menunjukkan di mana Anda perlu melakukan penyesuaian.Saya mengalami masalah ini ketika menyalin repo git dengan file yang berfungsi dari hard drive lama beberapa kali. Masalahnya berasal dari kenyataan bahwa pemilik dan izin berubah dari drive / mesin lama ke yang baru. Panjang dan pendeknya adalah, jalankan perintah berikut untuk meluruskan hal-hal ( berkat jawaban superuser ini ):
Perintah sebelumnya sebenarnya akan menyelesaikan perbedaan yang dilaporkan git diff, tetapi akan mencabut kemampuan Anda untuk mendaftar direktori, jadi
ls ./
gagalls: .: Permission denied
. Untuk memperbaikinya:Berita buruknya adalah jika Anda memiliki file yang ingin tetap dapat dieksekusi, seperti
.sh
skrip, Anda harus mengembalikannya. Anda dapat melakukannya dengan perintah berikut untuk setiap file:sumber
git config core.filemode
diatur ketrue
, jika tidak, perubahan izin tidak akan terdeteksi. Saya juga perlu menyegarkan indeks git setelah setiap perubahan untuk mengambilnya.Biasanya terjadi ketika repo dikloning antara Windows dan Linux / mesin Unix.
Katakan saja git untuk mengabaikan perubahan filemode, berikut adalah beberapa cara:
Konfigurasi HANYA untuk repo saat ini:
Konfigurasi secara global:
Tambahkan ~ / .gitconfig:
Pilih saja salah satunya.
sumber
Tampaknya Anda telah mengubah beberapa izin direktori. Saya melakukan langkah-langkah berikut untuk mengembalikannya.
sumber
Anda bisa mencoba git reset --hard HEAD untuk mengatur ulang repo ke keadaan default yang diharapkan.
sumber
git reset --hard HEAD
bekerja dengan baik untuk saya. terima kasihSaya telah menghadapi masalah yang sama. Dan ini menyelamatkan hidup saya: https://gist.github.com/jtdp/5443498
sumber
Ini terjadi ketika Anda menarik dan semua file dieksekusi di repositori jarak jauh. Membuatnya dapat dieksekusi lagi akan membuat semuanya kembali normal lagi.
Anda mungkin perlu melakukan:
sebagai gantinya, untuk file yang tidak ditetapkan sebagai yang dapat dieksekusi dan yang diubah karena operasi di atas. Ada cara yang lebih baik untuk melakukan ini tetapi ini hanyalah perbaikan yang sangat cepat dan kotor.
sumber
Anda dapat menggunakan perintah berikut untuk mengubah mode file Anda kembali.
git add --chmod=+x -- filename
Kemudian komit ke cabang.sumber
Saya hanya punya satu file bermasalah dengan izin yang diubah. Untuk mengembalikannya satu per satu, saya hanya menghapusnya secara manual dengan
rm <file>
dan kemudian melakukan checkout untuk menarik salinan baru.Untungnya saya belum menggelarnya.
Jika saya punya saya bisa berlari
git reset -- <file>
sebelum berlarigit checkout -- <file>
sumber
Saya baru saja mengalami masalah ini ketika membedakan cabang saya dengan master. Git mengembalikan satu kesalahan 'mode' ketika saya berharap cabang saya identik dengan master. Saya memperbaiki dengan menghapus file dan kemudian menggabungkan master lagi.
Pertama saya menjalankan diff:
Ini dikembalikan:
Saya kemudian menjalankan yang berikut ini untuk memperbaikinya:
Setelah ini,
git diff
tidak ada perbedaan antara cabang saya dan tuan.sumber