cara membuat Git mengabaikan file .idea yang dibuat oleh Rubymine

185

Saya menggunakan proyek Rubymine untuk Rails. Sangat sering, Rubymine membuat perubahan pada .idea/*file yang tidak saya pedulikan. Tapi itu terus mencegah saya dari memeriksa cabang baru, dan membuat versi saya .idea/berbeda dari rekan kerja saya.

Kami sudah ditambahkan .idea/ke .gitignore, tapi itu membuat perubahan pelacakan di .idea. Bagaimana saya harus melakukan ini dengan cara yang benar?

Di bawah ini adalah salah satu pesan kesalahan khas yang saya dapatkan:

error: Your local changes to the following files would be overwritten by checkout:
    .idea/workspace.xml
AdamNYC
sumber
9
mungkin Anda sudah berkomitmen; Anda perlu git rm; tambahkan untuk diabaikan.
Kaan Yy

Jawaban:

258

hanya .idea/bekerja dengan baik untuk saya

the_joric
sumber
5
hai yang disana! ingin memberi tahu kami lebih lanjut bagaimana Anda melakukannya ... tidak bekerja untuk saya? :(
YoniGeek
Git bekerja sedikit berbeda dari itu. Lihat halaman git man untuk info lebih lanjut.
Steve Benner
4
@BradBird Saya baru saja mencobanya - berfungsi untuk subfolder juga. Anda juga mungkin ingin mencoba**/.idea/
the_joric
22
Bagian dari masalah adalah jika Anda sudah mengatur barang-barang Anda, gitignore tidak akan membantu.
Dan Rosenstark
12
Tetapi jika Anda ingin mengabaikan file / folder setelah Anda menambahkan / memeriksanya maka Anda harus menghapusnya dengan "git rm -r --cached web / unggahan" (dalam contoh ini saya menambahkan folder "web / unggah" ke .gigignore file setelah mereka diperiksa) sumber: help.github.com/articles/ignoring-files
Dung
311

Coba git rm -r --cached .ideadi terminal Anda. Ini menonaktifkan pelacakan perubahan.

Petr Syrov
sumber
2
Terima kasih banyak! Tapi mengapa ada di cache setelah saya checkout repositori kosong totaly?
Budi
1
Terima kasih, sangat berguna. Menggunakan ini untuk menghapus file kemudian menambahkan .idea ke gitignore dan itu berfungsi dengan baik. Terima kasih banyak!
Tim R
Itu tidak benar-benar berfungsi ketika folder .idea sudah dalam pelacakan
ACV
Jadi jika folder sudah dilacak di Git, menambahkan .idea / ke .gitignore tidak akan menghentikan Git untuk melacaknya. Anda harus melakukan "git rm -r --cached .idea" terlebih dahulu, lalu tambahkan .idea / ke .gitignore Anda. Ini bagus untuk saya.
Sam003
41

Perhatikan bahwa JetBrains merekomendasikan "Jika Anda memutuskan untuk berbagi file proyek IDE dengan pengembang lain ...", lacak semua .idea/*file kecuali tiga file berikut :

  • workspace.xml
  • use.statistics.xml
  • task.xml

Jadi untuk mengikuti saran mereka, Anda akan menambahkan 3 file itu ke .gitignore Anda.


Sumber:

Jika Anda memutuskan untuk berbagi file proyek IDE dengan pengembang lain, ikuti panduan ini:
...
Inilah yang perlu Anda bagikan:

  • Semua file di bawah .idea direktori di root proyek kecuali yang workspace.xml , usage.statistics.xml , dan tasks.xml file pengaturan khusus yang pengguna toko
  • ...

Bagaimana mengelola proyek di bawah Sistem Kontrol Versi ( arsip )

Ada beberapa catatan tambahan pada halaman itu tentang file lain mana yang akan di-gitignore untuk berbagai IDE dan pembuatan otak jet spesifik.

Daryn
sumber
10
Sementara saya setuju dengan jawaban ini [+1 untuk kebenaran], saya pikir tim yang tidak ketat dengan IDE dan semacamnya bisa lolos dengan tidak memeriksa di .ideafolder sama sekali ... Lagipula tidak pernah masuk akal bagi saya, file di sana selalu konflik karena alasan yang tidak masuk akal.
JaKXz
6
Ini adalah praktik buruk untuk melakukan file IDE spesifik. Salah satu alasannya adalah bahwa pengembang yang berbeda dapat menggunakan alat yang berbeda. Yang lain adalah bahwa file-file itu mungkin berisi konfigurasi khusus pengguna yang akan selalu mengalami konflik.
Jordan Silva
2
Rekomendasi ini adalah praktik yang buruk. Menggunakannya dalam proyek adalah cara terbaik untuk versi file yang berisi informasi spesifik pengguna seperti jalur absolut ... Cukup lihat di dalam .ideafolder Anda sebelum mengikuti reco ini.
JBE
1
Sementara saya akan setuju bahwa secara membabi buta melakukan file IDE selalu merupakan ide yang buruk itu karena membabi buta melakukan sesuatu adalah ide yang buruk. Dalam beberapa keadaan berbagi file IDE dapat bekerja dengan baik. Secara konseptual mirip dengan berbagi file orkestrasi wadah di mana mereka adalah salah satu cara untuk menjalankan aplikasi. Sama seperti file IDE adalah salah satu cara untuk mengembangkan proyek dan dapat berisi definisi yang berguna seperti cara menjalankan tes unit atau perintah cakupan kode, yang terbungkus rapi untuk IDE tertentu. Sebagian besar .ideafile (setidaknya di PyCharm) dirancang untuk dibagikan.
Samuel Harmer
26

Tambahkan .idea/*ke daftar pengecualian Anda untuk mencegah pelacakan semua file .idea, direktori, dan sub-sumber daya.

Persepsi
sumber
24

jika file sudah dilacak oleh Git, menambahkan file ke .gitignore tidak akan menghentikan Git untuk melacaknya. Anda harus melakukan git terlebih dahulu file yang melanggar, lalu tambahkan ke .gitignore Anda.

Menambahkan .idea / harusnya berfungsi

appsmatics
sumber
Ini harus menjadi jawaban yang lebih komprehensif!
Sam003
21

menggunakan git rm -r --cached .ideadi terminal Anda bekerja sangat baik untuk saya. Ini menonaktifkan pelacakan perubahan dan menghapus sejumlah file di bawah folder rubymine (ide /) yang kemudian bisa saya tambahkan dan komit ke git, sehingga menghapus perbandingan dan memungkinkan pengaturan gitignore .idea/untuk bekerja.

GMarx
sumber
13

Tutup PHP Storm di terminal pergi ke jenis folder proyek

git rm -rf .idea; git commit -m "delete .idea"; git push;

Lalu pergi ke folder proyek dan hapus folder .idea

sudo rm -r .idea/

Mulai PhpStorm dan Anda selesai

Gustavo Maimone
sumber
12

Di rubymine gui, ada daftar abaikan (pengaturan / kontrol versi). Mungkin coba nonaktifkan di sana. Saya mendapat petunjuk dari teman-teman mereka.

masukkan deskripsi gambar di sini

manavortex
sumber
9

Tambahkan .idea ke ~ / .gitignore_global dan ikuti instruksi di sini untuk membuat .gitignore_global berfungsi:

Git global diabaikan tidak berfungsi

Maka Anda tidak perlu menambahkannya ke file .gitignore individual.

fosrias
sumber
8

Meskipun belum terlalu lama saya beralih ke Rubymine, saya merasa sulit untuk mengabaikan file .idea dari Rubymine karena telah berkomitmen untuk git.

Begini cara saya memperbaikinya

Jika Anda belum melakukan pementasan / komit sama sekali, atau Anda baru saja memulai proyek baru di tambang Ruby, maka cukup lakukan ini

Pilihan 1

Tambahkan baris di bawah ini ke file .gitignore yang biasanya diletakkan di root repositori Anda.

# Ignore .idea files
.idea/

Ini akan memastikan bahwa semua file .idea diabaikan dari dilacak oleh git, meskipun mereka masih tetap berada di folder proyek Anda secara lokal.

pilihan 2

Namun, jika Anda telah melakukan pementasan / komit, atau Anda baru saja membuka proyek yang ada di tambang Ruby, maka lakukan saja ini

Jalankan kode di terminal / baris perintah Anda

git rm -r --cached .idea

Ini menghapus file .idea yang sudah dilacak di git

Selanjutnya, sertakan .idea / ke file .gitignore yang biasanya ditempatkan di root repositori Anda.

# Ignore .idea files
.idea/

Ini akan memastikan bahwa semua file .idea diabaikan dari dilacak oleh git, meskipun mereka masih tetap berada di folder proyek Anda secara lokal.

Opsi 3

Namun jika Anda telah melakukan pementasan / komit, atau Anda baru saja membuka proyek yang ada di Ruby mine, dan ingin menghapus file .idea secara lokal dan git, maka lakukan saja ini

Jalankan kode di terminal / baris perintah Anda

git rm -r --cached .idea

Ini menghapus file .idea yang sudah dilacak di git

Jalankan kode di terminal / baris perintah Anda

rm -r .idea

Ini menghapus semua file .idea termasuk folder secara lokal

Selanjutnya, sertakan .idea / ke file .gitignore yang biasanya ditempatkan di root repositori Anda.

# Ignore .idea files
.idea/

Ini akan memastikan bahwa semua file .idea diabaikan dari dilacak oleh git, dan juga dihapus dari folder proyek Anda secara lokal.

Itu saja

saya harap ini membantu

Janji Preston
sumber
4

Bagi saya hanya ada satu solusi untuk menghapus folder .idea daripada melakukan file .gitignore dengan ".idea" dan daripada menggunakan IDE lagi

Ivan Petkevich
sumber
hai yang disana! Saya mencoba ini! tetapi IDE tidak dapat memuat ulang file saya lagi ... bagaimana Anda melakukan ini? Terima kasih!
YoniGeek
4

Saya sarankan membaca halaman git man untuk sepenuhnya memahami bagaimana mengabaikan pekerjaan, dan di masa depan Anda akan berterima kasih kepada saya;)

Relevan dengan masalah Anda:

Two consecutive asterisks ("**") in patterns matched against full pathname may have special meaning:

A leading "**" followed by a slash means match in all directories. For example, "**/foo" matches file or directory "foo" anywhere, the same     as pattern "foo". "**/foo/bar" matches file or directory "bar" anywhere that is directly under directory "foo".

A trailing "/**" matches everything inside. For example, "abc/**" matches all files inside directory "abc", relative to the location of the .    gitignore file, with infinite depth.

A slash followed by two consecutive asterisks then a slash matches zero or more directories. For example, "a/**/b" matches "a/b", "a/x/b",     "a/x/y/b" and so on.

Other consecutive asterisks are considered invalid.
Steve Benner
sumber
4

Anda dapat menggunakan gitignore untuk pembuatan file gitignore tingkat lanjut. Tag ini cepat, mudah, dan mutakhir dihasilkan secara otomatis untuk Anda.

Gunakan tautan ini untuk sebagian besar perangkat lunak jetbrains ( intelij , phpstorm ...) jetbrains .gitignore file

[sunting]

Di bawah ini adalah file gitignore yang dihasilkan untuk Software Jetbrains, ini akan mencegah Anda berbagi informasi sensitif (kata sandi, keystores, kata sandi db ...) yang digunakan oleh perangkat lunak Jetbrains mana pun untuk mengelola proyek.

# Created by https://www.gitignore.io

### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm

*.iml

## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:

# User-specific stuff:
# .idea/workspace.xml
# .idea/tasks.xml
# .idea/dictionaries

# Sensitive or high-churn files:
# .idea/dataSources.ids
# .idea/dataSources.xml
# .idea/sqlDataSources.xml
# .idea/dynamic.xml
# .idea/uiDesigner.xml

# Gradle:
# .idea/gradle.xml
# .idea/libraries

# Mongo Explorer plugin:
# .idea/mongoSettings.xml

## File-based project format:
*.ipr
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties

Kode yang dihasilkan juga dikomentari dengan baik. semoga membantu :)

Williem
sumber
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah.
Himanshu
@ Himanshu Tautannya ke mesin pencari file gitignore. Apa yang Anda sarankan untuk disalin dari itu ke pos?
Dan D.
4

Saya mencoba untuk menambahkan file-file itu ke dalam saya .gitignoredan itu tidak berguna ...

Namun demikian, seperti kata Petr Syrov , Anda dapat menggunakan git rm -r --cached .ideaterminal Anda dan file-file itu tidak akan menjadi masalah lagi!

frisinacho
sumber
2

Bagaimana dengan .idea/*? Tidak menguji, tetapi harus melakukannya

ksol
sumber
1

Gunakan .ignore plugin: https://plugins.jetbrains.com/plugin/7495--ignore

Ini mengelola banyak jalur / pola untuk Anda secara otomatis dan juga memiliki banyak fitur tambahan yang berguna. Ini kompatibel dengan:

  • IntelliJ IDEA
  • PhpStorm
  • WebStorm
  • PyCharm
  • RubyMine
  • AppCode
  • CLion
  • GoLand
  • DataGrip
  • Pengendara
  • MPS
  • Android Studio
Mir-Ismaili
sumber
0

Jika Anda sudah membuat komit awal dan Anda memiliki file .idea muncul sebagai file baru di git, Anda harus menghapus file terlebih dahulu dan kemudian komit. Langkah-langkah berikut akan melakukan triknya

 1. git rm --cached -r .idea/
 2. Add .idea/ to **.git/info/exclude** or **.gitignore**
 3. git commit -m 'ignore .idea/ files'

Ini dijelaskan secara rinci di tautan ini di sini: https://devconnected.com/how-to-clear-git-cache/

benitta.ruphus
sumber