File direktori .idea yang tidak sengaja dilakukan ke git

306

Saya tidak sengaja memasukkan .idea/direktori ke git. Ini menyebabkan konflik di tempat lain saya perlu checkout repo saya. Saya bertanya-tanya bagaimana cara menghapus file-file ini dari remote?

Saya masih membutuhkan file-file ini secara lokal karena Intellij IDE membutuhkannya. Saya hanya tidak ingin mereka di remote. Saya telah menambahkan direktori .idea/ke saya .gitignoredan berkomitmen dan mendorong file ini ke jarak jauh. Ini tampaknya tidak berpengaruh selama checkout saya di komputer saya yang lain sekalipun. Saya masih mendapatkan pesan kesalahan:

error: The following untracked working tree files would be overwritten by checkout:
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/uiDesigner.xml
.idea/vcs.xml
.idea/workspace.xml
sethu
sumber
10
Anda dapat membantu menghindari hal ini di masa mendatang dengan meninjau komitmen Anda. Saya lebih suka menjalankan commitdengan -vuntuk menampilkan diff di editor Anda ketika Anda sedang menulis komit. Ini membantu mencegah kesalahan semacam ini serta membantu Anda memfokuskan pesan komit Anda pada apa yang Anda ubah.
Daenyth
Daenyth benar. Plus Git secara default mengharuskan Anda untuk menambahkan file ke daftar perubahan yang dilakukan, jadi gunakan itu dan jangan melakukan semuanya sekaligus. Kalau tidak, Anda akan mencemari repositori Anda seperti yang terjadi dengan menambahkannya .idea.
Tadeck
1
Semua kecuali dua dari file dalam .idea harus di kontrol sumber: devnet.jetbrains.com/docs/DOC-1186
CJA
Saya telah menemukan plugin IntelliJ .ignore sangat berguna ketika Anda ingin mengelola semua file yang tidak boleh dikomit ke git: plugins.jetbrains.com/plugin/7495?pr=idea
paranza
Hai, apa bahayanya jika kita memiliki .idea di repositori jarak jauh?
milad salimi

Jawaban:

677

Tambahkan direktori .idea ke daftar file yang diabaikan

Pertama, tambahkan ke .gitignore, jadi itu tidak sengaja dilakukan oleh Anda (atau orang lain) lagi:

.idea

Hapus dari repositori

Kedua, hapus direktori hanya dari repositori, tetapi jangan hapus secara lokal. Untuk mencapai itu, lakukan apa yang tercantum di sini:

Hapus file dari repositori Git tanpa menghapusnya dari sistem file lokal

Kirim perubahan ke orang lain

Ketiga, komit .gitignorefile dan penghapusan dari .idearepositori. Setelah itu dorong ke remote.

Ringkasan

Proses penuh akan terlihat seperti ini:

$ echo '.idea' >> .gitignore
$ git rm -r --cached .idea
$ git add .gitignore
$ git commit -m '(some message stating you added .idea to ignored entries)'
$ git push

(opsional, Anda dapat mengganti baris terakhir dengan git push some_remote, di mana some_remotenama remote yang ingin Anda tekan)

Tadeck
sumber
4
Catatan: Jika Anda mendapatkan pesan fatal: pathspec '.idea' did not match any filessaat dijalankan git rm -r --cached .idea, hapus folder .idea Anda, tarik dari github lalu coba lagi.
annedroiid
Jika Anda mendapatkan kesalahan @annedroiid dari 'tidak cocok dengan file apa pun', Anda dapat mencoba dan menambahkan path-nya. Seperti ketika saya menghapus file database.yml, saya cukup melakukan 'git rm -r --cached config / database.yml'
Ruto Collins
Beberapa file dalam direktori .idea harus diperiksa ke repo Anda. Lihat github.com/github/gitignore/blob/master/Global/… untuk saran JetBrains tentang seperti apa tampilan .gitignore Anda.
tokenizer_fsj
2
Saya tidak bisa mengeluarkan folder ini dari repo kami seumur hidup saya ... beralih cabang terus melacaknya kembali ... orang-orang telah menjalankan ini di beberapa cabang dan setiap kali Anda mengganti cabang ... git berpikir perlu .. pada suatu saat ... hapus folder .idea Anda jadi .. singkatnya ... beralih cabang sekarang pada dasarnya adalah sebuah pengaturan untuk kita. Saya mencoba menjalankannya pada master ... kemudian menggabungkan ke semua cabang .. tetapi masih menghapus pengaturan.
nawlbergs
1
Apakah kami memiliki solusi permanen untuk ini ditetapkan ke IntelliJ untuk TIDAK PERNAH menambahkan .ideafolder untuk melakukan file?
Serhat
88

Anda dapat menghapusnya dari repo dan melakukan perubahan.

git rm .idea/ -r --cached
git add -u .idea/
git commit -m "Removed the .idea folder"

Setelah itu, Anda dapat mendorongnya ke remote dan setiap checkout / clone setelah itu akan beres.

Ricardo Souza
sumber
10
Ini bekerja untuk saya, yang bertentangan dengan jawaban yang diterima. Mungkin itu git add -u yang membuat perbedaan.
Paolo Mioni
Anda tidak perlu baris kedua.
kjdion84
Seperti yang dikatakan orang lain, saya tidak menjalankan baris kedua. Bekerja seperti pesona! terima kasih
blackkara
0

Anda harus menambahkan file .gitignore ke proyek Anda dan menambahkannya /.idea. Anda harus menambahkan setiap direktori / file dalam satu baris.

Jika Anda memiliki file .gitignore yang ada, maka Anda cukup menambahkan baris baru ke file dan meletakkannya /.ideake baris baru.

Setelah itu jalankan git rm -r --cached .ideaperintah.

Jika Anda menghadapi kesalahan, Anda dapat menjalankan git rm -r -f --cached .ideaperintah. Setelah semua berjalan git add .dan kemudian git commit -m "Removed .idea directory and added a .gitignore file"dan akhirnya dorong perubahan dengan menjalankan git pushperintah.

Hossein
sumber
0

Lebih baik melakukan ini di cabang Master

Edit file .gitignore. Tambahkan baris di bawah ini di dalamnya.

.idea

Hapus folder .idea dari repo jarak jauh. menggunakan perintah di bawah ini.

git rm -r --cached .idea

Untuk info lebih lanjut. referensi: Menghapus File dari Repositori Git Tanpa Sebenarnya Menghapusnya

Tahap file .gitignore. Menggunakan perintah di bawah ini

git add .gitignore

Melakukan

git commit -m 'Removed .idea folder'

Dorong ke jarak jauh

git push origin master

rahulnikhare
sumber