Saya mencoba memasukkan file saya ke github menggunakan bash. Mereka sudah ada di sana, dan saya mengunggah versi yang lebih baru dengan baris dan kode baru, dll. Tetapi ketika saya mencoba git add
dan kemudian git status
dikatakan:
Di master cabang
tidak ada yang perlu dilakukan, direktori kerja bersih
Dan file yang saya gunakan baru saja diubah.
git diff
(ataugit status
) tidak menampilkan apa pun yang menjelaskan mengapa tidak ada yang perlu ditambahkan. Jadi pertanyaannya sebenarnya: "Mengapa git tidak mengenali bahwa file saya telah diubah?"Jawaban:
Saya mengalami masalah di mana sekali waktu saya mengatur indeks git ke 'asumsikan tidak berubah' pada file saya.
Anda dapat memberi tahu git untuk berhenti mengabaikan perubahan pada file dengan:
Jika itu tidak membantu pengaturan ulang mungkin cukup untuk kasus aneh lainnya.
Dalam praktiknya saya menemukan menghapus file yang di-cache dan mengatur ulang agar berfungsi:
Cara
git rm --cached
untuk hanya menghapus file dari indeks, danreset
memberi tahu git untuk memuat ulang indeks git dari komit terakhir.sumber
git add -f path/to/the/file
itu akan secara paksa menambahkan file untuk komit.git add -f
file yang berada dalam status "asumsikan tidak berubah", dan tidak berhasil - harus salah satugit update-index
ataugit rm --cached
diikuti oleh agit reset
untuk membuatnya berfungsi.git rm --cached -r .
dan kemudiangit reset .
.git update-index --no-skip-worktree path/to/file
inilah cara saya memecahkan masalah sayaPeriksa
.gitignore
file Anda . Anda mungkin menemukan bahwa file, atau ekstensi file, atau jalur ke file yang Anda coba kerjakan cocok dengan entri di.gitignore
dalamnya, yang akan menjelaskan mengapa file itu diabaikan (dan tidak dikenali sebagai file yang diubah).Ini ternyata menjadi kasus saya ketika saya memiliki masalah yang sama.
sumber
lib/
, yang membuat git mengabaikan folder ini. Tidak ada masalah dengan itu - setidaknya jika folder ini bukan folder utama dari proyek Anda, seperti yang terjadi pada saya.Seperti yang telah dibahas sebelumnya, file mungkin ditandai dengan "asumsi-tidak berubah", yang pada dasarnya memberitahu git bahwa Anda tidak akan memodifikasi file, jadi tidak perlu melacak perubahan dengannya. Namun ini dapat mempengaruhi banyak file, dan jika itu adalah ruang kerja yang besar, Anda mungkin tidak ingin memeriksa semuanya satu per satu. Jika demikian, Anda dapat mencoba: git update-index --really-refresh
menurut dokumen:
Ini pada dasarnya akan memaksa git untuk melacak perubahan semua file terlepas dari flag "asumsikan-tidak berubah".
sumber
git status
mengatakan tidak ada file yang diubah, tetapigit add .
menambahkan dua file, dangit update-index --really-refresh
mengatakan keduanya membutuhkan pembaruan, tetapi sepertinya tidak melakukan apa-apa. Ada ide?git ls-files -v | grep '^[[:lower:]]'
Jika tidak ada yang membantu, Anda harus membuat pertanyaan dengan detail lebih lanjut sehingga kami dapat membantu kamu.Kedengarannya gila, tapi terkadang Anda tidak berada dalam repo yang benar meskipun Anda mengira Anda benar. Misalnya, Anda mungkin telah memindahkan direktori induk, tetapi lupa untuk mengganti repo di editor teks Anda. Atau sebaliknya: Anda berada di repo yang benar di editor teks tetapi repo yang salah di baris perintah. Dalam situasi pertama, Anda melakukan pengeditan di file yang benar tetapi itu bukan folder yang sama yang terbuka di baris perintah Anda, jadi sebenarnya itu adalah file yang salah. Dalam situasi kedua, Anda sebenarnya mengedit file yang benar, tetapi baris perintah Anda git tidak akan mengenali perubahan tersebut karena Anda tidak berada di direktori yang benar pada baris perintah.
sumber
baik kami tidak memiliki cukup untuk menjawab pertanyaan ini jadi saya akan memberi Anda beberapa tebakan:
1) Anda menyimpan perubahan Anda, untuk memperbaiki jenis:
git stash pop
2) Anda memiliki perubahan dan Anda berkomitmen, Anda harus dapat melihat komitmen Anda
git log
3) Anda memiliki perubahan melakukan beberapa jenis
git reset --hard
atau lainnya, perubahan Anda mungkin ada di reflog, ketikgit reflog --all
diikuti dengan memeriksa atau memilih ceri ref jika Anda pernah menemukannya.4) Anda telah memeriksa repo yang sama beberapa kali, dan Anda salah.
sumber
git commit --amend
memasukkan perubahan baru Anda ke dalam pengubahan terakhir , jangan lakukan itu jika Anda telah membagikan komit Anda.Apakah hal yang funky seperti ini terjadi. Plugin git Eclipse Kepler secara otomatis menandai semua folder proyek saya sebagai diabaikan di folder .gitignore.
Ketika saya sampai
commit
diTeam
menu, mereka semua akan kembali untuk diabaikan. Sejauh yang saya tahu, ini karena saya menetapkannya sebagai turunan dalam proyek induk. Menghapus tanda mereka sebagai telahdervied
memperbaiki ini. Saya belum pernah melihat ini sebelumnya di Indigo. Semoga bisa membantu seseorang.sumber
TL; DR; Apakah Anda berada di repositori yang benar?
Ceritaku agak lucu tapi kupikir itu bisa terjadi dengan seseorang yang mungkin memiliki skenario serupa jadi bagikan di sini.
Sebenarnya di komputer saya, saya memiliki dua repositori git terpisah
repo1
danrepo2
dikonfigurasi dalam direktori root yang sama bernamasource
. Kedua repositori ini pada dasarnya adalah repositori dari dua produk yang saya kerjakan di perusahaan saya. Sekarang masalahnya adalah bahwa sebagai pedoman standar, struktur direktori kode sumber dari semua produk persis sama di perusahaan saya.Jadi tanpa sadar saya memodifikasi file dengan nama yang sama persis dengan
repo2
yang seharusnya saya ubahrepo1
. Jadi, saya hanya terus menjalankan perintahgit status
direpo1
dan itu terus memberikan pesan yang samaselama setengah jam. Kemudian kolega saya mengamatinya sebagai sepasang mata independen dan membawa hal ini kepada saya bahwa saya berada di tempat penyimpanan yang salah tetapi terlihat sangat mirip. Saat saya beralih ke
repo1
Git mulai memperhatikan file yang diubah.Kasus yang tidak begitu umum. Tapi kamu tidak pernah tahu!
sumber
Kami telah mengalami ini di Windows saat mengubah file dengan mentransfer perbedaan melalui alat WinMerge. Rupanya WinMerge (setidaknya cara itu dikonfigurasi di komputer saya) terkadang tidak memperbarui stempel waktu file yang diubahnya.
Di Windows, status git , menggunakan, antara lain, stempel waktu file dan perubahan ukuran file untuk menentukan apakah file telah berubah atau tidak. Jadi karena cap waktu tidak diperbarui, itu hanya ukuran file yang harus dilalui. Sayangnya file yang dimaksud adalah file versi sederhana dimana isinya diubah dari 7.1.2 menjadi 7.2.0 . Dengan kata lain, ukuran file juga tidak berubah. File lain yang juga diubah oleh WinMerge dan stempel waktunya tidak diperbarui tetapi memiliki ukuran berbeda setelah perubahan terdeteksi oleh status git dengan baik.
sumber
Saya mengalami masalah serupa saat menggunakan Sublime Text-3 . Setelah membuat perubahan baru pada kode dan menyimpannya, ketika saya mencoba perintah git add ./status responnya adalah "cabang sudah up to date". Saya tahu, terlepas dari menyimpan pembaruan di editor teks, file tersebut sebenarnya tidak berubah. Membuka file di editor lain dan menyimpan perubahan berhasil untuk saya.
sumber
Apakah Anda memindahkan direktori keluar dari bawah cangkang Anda? Ini dapat terjadi jika Anda memulihkan proyek dari cadangan. Untuk mengatasinya, cukup
cd
keluar dan masuk kembali:sumber
Secara umum dengan masalah ini, pertama-tama periksa apakah Anda sedang mengedit file yang menurut Anda memang benar! Saya mengalami masalah ini ketika saya mengedit file JavaScript yang transparan daripada file sumber (versi transpiled tidak berada di bawah kendali sumber).
sumber
Klien Git saya (Gitg) menyebabkan masalah ini bagi saya. Perintah normal yang biasanya saya jalankan tidak berfungsi. Bahkan menyentuh setiap file dalam proyek tidak berhasil.
Saya menemukan cara untuk memperbaikinya dan saya masih tidak yakin apa penyebabnya. Salin direktori proyek Anda. File yang hilang akan muncul di direktori yang disalin
git status
. Mengganti nama mungkin melakukan hal yang sama.sumber
Mengalami masalah, tetapi itu hanya dua direktori dan tidak saya ketahui adalah bahwa kedua direktori tersebut akhirnya dikonfigurasi sebagai git submodul. Bagaimana itu terjadi Saya tidak tahu, tetapi prosesnya adalah mengikuti beberapa instruksi pada tautan ini, tetapi TIDAK menghapus direktori (seperti yang dia lakukan di akhir) melainkan lakukan
git add path/to/dir
sumber
Saat Anda mengedit file di Visual Studio, file tersebut akan terdaftar dalam perubahan git secara instan meskipun file tersebut tidak disimpan. Jadi yang perlu Anda lakukan hanyalah menyimpan file secara manual (Ctrl + S untuk file yang sedang ditampilkan atau Ctrl + Shift + S untuk semua file proyek) dan git bash akan mengambilnya.
sumber
.js
file, bekerja dengan Visual Studio Code. Terima kasih.Jenis file apa yang Anda coba unggah? Sekarang saya hanya menghabiskan waktu hampir satu jam untuk mengupload modifikasi css saya. Tetapi css ini dikompilasi dari file styl oleh karena itu git mengabaikannya. Ketika saya mengubah sumber gaya maka semuanya bekerja.
Semoga membantu.
sumber
Terkadang tergantung dan menurut versi git dan jika Anda lupa melakukannya
git add .
.Untuk memeriksa tentang perubahan Anda pada repositori, gunakan selalu
git status
yang menampilkan semua file yang tidak terlacak dan diubah. Karenagit diff
hanya menampilkan file yang ditambahkan.sumber
Pastikan untuk tidak membuat symlink (
ln -s source dest
) dari dalam Git Bash untuk Windows.Itu TIDAK membuat symlink, tetapi melakukan salinan dalam dari sumber ke tujuan
Saya mengalami perilaku yang sama seperti OP di terminal MINGW64 dari Git Bash untuk Windows (versi 2.16.2) untuk menyadari bahwa perubahan 'yang diedit' saya sebenarnya ada di direktori asli, dan perintah git bash saya berasal dari dalam salinan dalam yang tersisa tidak berubah.
sumber
Saya memiliki masalah yang sama. Ternyata saya memiliki dua salinan proyek dan terminal saya berada di folder proyek yang salah!
sumber
Itu terjadi pada saya juga, saya mencoba metode yang disebutkan di atas dan tidak ada yang membantu. Maka solusinya adalah mengubah file melalui terminal, bukan GUI. Saya tidak tahu mengapa ini berhasil tetapi berhasil. Setelah saya mengedit file melalui nano dari terminal git mengenalinya sebagai diubah dan saya bisa menambahkannya dan melakukan.
sumber
Saya memiliki masalah yang sama di sini VS2015 tidak mengenali perubahan file js saya, menghapus remote dari pengaturan repositori dan kemudian menambahkan kembali jalur URL jarak jauh memecahkan masalah saya.
sumber
Saya memiliki masalah serupa ketika saya membuat file patch di server dengan editor vi. Sepertinya masalahnya ada pada jarak. Ketika saya mendorong patch dari lokal, penerapannya tepat.
sumber
Saya punya masalah ini. Milik saya tidak berfungsi karena saya meletakkan file saya di folder .git di dalam proyek saya.
sumber
Dalam kasus saya, melakukan
git reset --hard
file yang dihapus & meninggalkan beberapa folder kosong. Setelah memeriksa konten, saya melihat direktori tersebut kosong.Namun git mengabaikan folder kosong. (Koreksi, git mengabaikan semua direktori saat melacak konten, folder kosong bukanlah konten.)
sumber
mencoba untuk menggunakan
git add *
kemudiangit commit
sumber