Làm thế nào để làm cho Git bỏ qua các tập tin .idea được tạo bởi Rubymine


182

Tôi sử dụng Rubymine cho các dự án Rails. Rất thường xuyên, Rubymine thực hiện các thay đổi trong .idea/*các tệp mà tôi không quan tâm. Nhưng nó liên tục ngăn cản tôi kiểm tra các chi nhánh mới và làm cho phiên bản của tôi .idea/khác với đồng nghiệp của tôi.

Chúng tôi đã thêm .idea/vào .gitignore, nhưng nó tiếp tục theo dõi các thay đổi .idea. Làm thế nào tôi nên làm điều này đúng cách?

Dưới đây là một trong những thông báo lỗi điển hình tôi nhận được:

error: Your local changes to the following files would be overwritten by checkout:
    .idea/workspace.xml

9
có lẽ bạn đã hài lòng; bạn cần phải git rm; thêm nó để bỏ qua.
Kaan Yy

Câu trả lời:


254

chỉ .idea/làm việc tốt cho tôi


5
chào bạn muốn nói với chúng tôi nhiều hơn về cách bạn làm điều đó ... không làm việc cho tôi? :(
YoniGeek

Git hoạt động hơi khác một chút so với điều đó. Xem trang git man để biết thêm.
Steve Benner

4
@BradBird Tôi vừa thử nó - cũng hoạt động cho các thư mục con. Ngoài ra, bạn có thể muốn dùng thử**/.idea/
the_joric

21
Một phần của vấn đề là nếu bạn đã dàn dựng nội dung của mình, .gitignore sẽ không giúp ích gì.
Dan Rosenstark

12
Nhưng nếu bạn muốn bỏ qua các tệp / thư mục sau khi bạn thêm / kiểm tra chúng thì bạn cần xóa chúng bằng "git rm -r --cached web / uploads" (trong ví dụ này tôi đã thêm thư mục "web / uploads" vào .gigignore tệp sau khi chúng được kiểm tra) nguồn: help.github.com/articles/ignoring-files
Dung

309

Hãy thử git rm -r --cached .ideatrong thiết bị đầu cuối của bạn. Nó vô hiệu hóa theo dõi thay đổi.


2
Cảm ơn rất nhiều! Nhưng tại sao nó lại trong bộ đệm sau khi tôi kiểm tra một kho lưu trữ trống hoàn toàn?
Budi

1
Cảm ơn bạn, vô cùng hữu ích. Đã sử dụng điều này để loại bỏ các tệp sau đó thêm .idea vào gitignore và nó hoạt động rất tốt. Cảm ơn bạn rất nhiều!
Tim R

Điều đó không thực sự hoạt động khi thư mục .idea đã được theo dõi
ACV

Vì vậy, nếu thư mục đã được theo dõi trong Git, việc thêm .idea / vào .gitignore sẽ không ngăn Git theo dõi nó. Trước tiên, bạn cần thực hiện "git rm -r --cached .idea", sau đó thêm .idea / vào .gitignore của bạn. Điều này sẽ rất tốt với tôi.
Sam003

41

Lưu ý rằng JetBrains khuyến nghị "Nếu bạn quyết định chia sẻ tệp dự án IDE với các nhà phát triển khác ...", hãy theo dõi tất cả các .idea/*tệp ngoại trừ ba tệp sau:

  • không gian làm việc
  • cách sử dụng
  • nhiệm vụ

Vì vậy, để làm theo lời khuyên của họ, bạn sẽ thêm 3 tệp đó vào .gitignore của bạn.


Nguồn:

Nếu bạn quyết định chia sẻ tệp dự án IDE với các nhà phát triển khác, hãy làm theo các nguyên tắc sau:
...
Đây là những gì bạn cần chia sẻ:

  • Tất cả các tệp trong thư mục .idea trong thư mục gốc của dự án ngoại trừ các tệp workspace.xml , used.statistic.xml và các tệp task.xml lưu trữ các cài đặt cụ thể của người dùng
  • ...

Cách quản lý dự án trong Hệ thống kiểm soát phiên bản ( lưu trữ )

Có một số ghi chú bổ sung trên trang đó về các tệp khác để gitignore cho các IDE và bản dựng jetbrains cụ thể khác nhau.


10
Mặc dù tôi đồng ý với câu trả lời này [+ 1'd cho tính chính xác], tôi nghĩ rằng các đội không nghiêm ngặt với IDE và như vậy có thể thoát khỏi việc không kiểm tra trong .ideathư mục ... Dù sao thì nó cũng không có ý nghĩa gì đối với tôi trong đó luôn có xung đột vì những lý do vô nghĩa.
JaKXz

6
Đó là một thực tế xấu để cam kết các tập tin cụ thể IDE. Một lý do là các nhà phát triển khác nhau có thể sử dụng các công cụ khác nhau. Một điều nữa là các tệp đó có thể chứa cấu hình cụ thể của người dùng sẽ luôn bị xung đột.
Jordan Silva

2
Khuyến nghị này là một thực hành xấu. Sử dụng nó trong một dự án là cách tốt nhất để phiên bản các tệp chứa thông tin cụ thể của người dùng như đường dẫn tuyệt đối ... Chỉ cần nhìn vào .ideathư mục của bạn trước khi làm theo bản ghi chú này.
JBE

1
Mặc dù tôi đồng ý rằng việc cam kết một cách mù quáng các tệp IDE luôn là một ý tưởng tồi bởi vì mù quáng cam kết bất cứ điều gì là một ý tưởng tồi. Trong một số trường hợp chia sẻ tệp IDE có thể hoạt động tốt. Về mặt khái niệm, nó tương tự như việc chia sẻ các tập tin điều phối container ở chỗ chúng là một cách để chạy các ứng dụng. Giống như các tệp IDE là một cách để phát triển dự án và có thể chứa các định nghĩa hữu ích như cách chạy các bài kiểm tra đơn vị hoặc các lệnh bao phủ mã, được gói gọn gàng cho một IDE cụ thể. Hầu hết các .ideatệp (ít nhất là trong PyCharm) được thiết kế để chia sẻ.
Samuel Harmer

26

Thêm vào .idea/*danh sách loại trừ của bạn để ngăn theo dõi tất cả các tệp .idea, thư mục và tài nguyên phụ.


24

nếu một tệp đã được Git theo dõi, việc thêm tệp vào .gitignore sẽ không ngăn Git theo dõi nó. Bạn cần phải thực hiện git rm (các) tệp vi phạm trước, sau đó thêm vào .gitignore của bạn.

Thêm .idea / nên hoạt động


Đây nên là câu trả lời toàn diện hơn!
Sam003

21

sử dụng git rm -r --cached .ideatrong thiết bị đầu cuối của bạn làm việc tuyệt vời cho tôi. Nó vô hiệu hóa theo dõi thay đổi và bỏ đặt một số tệp trong thư mục rubymine (ý tưởng /) mà sau đó tôi có thể thêm và cam kết với git, do đó loại bỏ so sánh và cho phép cài đặt gitignore .idea/hoạt động.


13

Đóng PHP Storm trong terminal đi đến loại thư mục dự án

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

Sau đó vào thư mục dự án và xóa thư mục .idea

sudo rm -r .idea/

Bắt đầu PhpStorm và bạn đã hoàn thành


12

Trong gui rubymine, có một danh sách bỏ qua (cài đặt / kiểm soát phiên bản). Có thể thử vô hiệu hóa nó ở đó. Tôi đã nhận được gợi ý từ những người hỗ trợ của họ.

nhập mô tả hình ảnh ở đây



8

Mặc dù không quá lâu để tôi chuyển sang Rubymine, tôi thấy khó khăn khi bỏ qua các tập tin .idea của Rubymine đã được cam kết với git.

Đây là cách tôi sửa nó

Nếu bạn chưa thực hiện bất kỳ dàn dựng / cam kết nào, hoặc bạn vừa thực hiện một dự án mới trong Ruby mine, thì chỉ cần làm điều này

lựa chọn 1

Thêm dòng dưới đây vào tệp .gitignore thường được đặt ở thư mục gốc của kho lưu trữ của bạn.

# Ignore .idea files
.idea/

Điều này sẽ đảm bảo rằng tất cả các tệp .idea bị bỏ qua khỏi bị theo dõi bởi git, mặc dù chúng sẽ vẫn còn trong thư mục dự án của bạn cục bộ.

Lựa chọn 2

Tuy nhiên, nếu bạn đã thực hiện một số giai đoạn / cam kết hoặc bạn vừa mở một dự án hiện có trong Ruby mine, thì chỉ cần làm điều này

Chạy mã trong thiết bị đầu cuối / dòng lệnh của bạn

git rm -r --cached .idea

Điều này xóa các tập tin .idea đã theo dõi trong git

Tiếp theo, bao gồm .idea / đến tệp .gitignore thường được đặt ở thư mục gốc của kho lưu trữ của bạn.

# Ignore .idea files
.idea/

Điều này sẽ đảm bảo rằng tất cả các tệp .idea bị bỏ qua khỏi bị theo dõi bởi git, mặc dù chúng sẽ vẫn còn trong thư mục dự án của bạn cục bộ.

Lựa chọn 3

Tuy nhiên, nếu bạn đã thực hiện một số giai đoạn / cam kết hoặc bạn vừa mở một dự án hiện có trong mỏ Ruby và muốn xóa hoàn toàn các tệp .idea cục bộ và trong git, thì chỉ cần thực hiện việc này

Chạy mã trong thiết bị đầu cuối / dòng lệnh của bạn

git rm -r --cached .idea

Điều này xóa các tập tin .idea đã theo dõi trong git

Chạy mã trong thiết bị đầu cuối / dòng lệnh của bạn

rm -r .idea

Thao tác này sẽ xóa tất cả các tệp .idea bao gồm cả thư mục cục bộ

Tiếp theo, bao gồm .idea / đến tệp .gitignore thường được đặt ở thư mục gốc của kho lưu trữ của bạn.

# Ignore .idea files
.idea/

Điều này sẽ đảm bảo rằng tất cả các tệp .idea bị bỏ qua khỏi bị theo dõi bởi git và cũng bị xóa khỏi thư mục dự án của bạn cục bộ.

Đó là tất cả

Tôi hi vọng cái này giúp được


4

Đối với tôi chỉ có một giải pháp để xóa thư mục .idea hơn là tệp cam kết .gitignore với ".idea" và hơn là sử dụng lại IDE


chào bạn Tôi đã thử điều này! nhưng IDE không thể tải lại các tập tin của tôi một lần nữa ... bạn đã làm điều này như thế nào? cảm ơn!
YoniGeek

4

Tôi khuyên bạn nên đọc trang git man để hiểu đầy đủ về cách bỏ qua công việc và trong tương lai bạn sẽ cảm ơn tôi;)

Có liên quan đến vấn đề của bạn:

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

Bạn có thể sử dụng gitignore để tạo tệp gitignore nâng cao. Đó là các thẻ nhanh, dễ dàng và tiên tiến được tạo tự động cho bạn.

Sử dụng liên kết này cho hầu hết các phần mềm jetbrains ( intelij , phpstorm ...) tệp jetgins .gitignore

[biên tập]

Dưới đây là tệp gitignore được tạo cho Phần mềm Jetbrains, điều này sẽ ngăn bạn chia sẻ thông tin nhạy cảm (mật khẩu, kho khóa, mật khẩu db ...) được sử dụng bởi bất kỳ phần mềm Jetbrains nào để quản lý dự án.

# 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

Mã tạo cũng được bình luận tốt. hy vọng nó sẽ giúp :)


Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi.
Himanshu

@Himanshu Liên kết là một công cụ tìm kiếm các tập tin gitignore. Những gì bạn đề nghị nên được sao chép từ nó vào bài viết?
Dan D.

4

Tôi đã cố thêm các tệp đó vào .gitignorevà nó vô dụng ...

Tuy nhiên, như Petr Syrov đã nói, bạn có thể sử dụng git rm -r --cached .ideavào thiết bị đầu cuối của mình và những tệp đó sẽ không còn là vấn đề nữa!



2

Thế còn .idea/*? Không thử nghiệm, nhưng nó nên làm điều đó


1

Sử dụng plugin .ignore : https://plugins.jetbrains.com/plugin/7495--ignore

Nó tự động quản lý rất nhiều đường dẫn / mẫu cho bạn và cũng có nhiều tính năng bổ sung hữu ích. Nó tương thích với:

  • Ý tưởng của IntelliJ
  • PhpStorm
  • WebStorm
  • Kim tự tháp
  • Ruby
  • Mã nguồn
  • CLion
  • GoLand
  • DataGrip
  • Kỵ sĩ
  • MPS
  • Studio Android

0

Nếu bạn đã thực hiện một cam kết ban đầu và bạn có các tệp .idea hiển thị dưới dạng các tệp mới trong git, bạn sẽ cần xóa các tệp trước và sau đó cam kết chúng. Các bước sau đây sẽ thực hiện các mẹo

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

Nó được giải thích chi tiết trong liên kết này tại đây: https://devconnected.com/how-to-clear-git-cache/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.