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

9
mungkin Anda sudah berkomitmen; Anda perlu git rm; tambahkan untuk diabaikan.
Kaan Yy

Jawaban:


258

hanya .idea/bekerja dengan baik untuk saya


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.


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.


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.


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


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.


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


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



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


4

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


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.

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 :)


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!



2

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


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

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/

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.