Vô tình cam kết tập tin thư mục .idea vào git


306

Tôi đã vô tình cam kết .idea/thư mục vào git. Điều này đang gây ra xung đột ở mọi nơi khác mà tôi cần kiểm tra repo của mình. Tôi đã tự hỏi làm thế nào để tôi loại bỏ các tập tin từ xa?

Tôi vẫn cần các tệp này cục bộ vì Intellij IDE cần chúng. Tôi chỉ không muốn chúng ở xa. Tôi đã thêm thư mục .idea/vào .gitignorevà cam kết và đẩy tập tin này vào điều khiển từ xa. Điều này dường như không có tác dụng trong quá trình thanh toán trên máy khác của tôi. Tôi vẫn nhận được thông báo lỗi:

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

10
Bạn có thể giúp tránh điều này trong tương lai bằng cách xem lại các cam kết của bạn. Tôi thích chạy commitvới -vđể hiển thị khác biệt trong trình soạn thảo của bạn khi bạn viết cam kết. Nó giúp ngăn ngừa loại sai lầm này cũng như giúp bạn tập trung vào thông điệp cam kết của bạn về những gì bạn đã thay đổi.
Daenyth

Daenyth đúng. Plus Git theo mặc định yêu cầu bạn thêm tệp vào danh sách các thay đổi đã cam kết, vì vậy hãy sử dụng điều đó và không cam kết mọi thứ cùng một lúc. Nếu không, bạn sẽ làm ô nhiễm kho lưu trữ của bạn như nó đã xảy ra bằng cách thêm .ideavào nó.
Tadeck

1
Tất cả trừ hai trong số các tệp trong .idea phải nằm trong kiểm soát nguồn: devnet.jetbrains.com/docs/DOC-1186
cja

Tôi đã tìm thấy IntelliJ .ignore cắm rất hữu ích khi bạn muốn quản lý tất cả các file mà không cần phải cam kết git: plugins.jetbrains.com/plugin/7495?pr=idea
paranza

Xin chào, có hại gì nếu chúng ta có .idea trong kho lưu trữ từ xa?
milad salimi

Câu trả lời:


677

Thêm thư mục .idea vào danh sách các tập tin bị bỏ qua

Đầu tiên, thêm nó vào .gitignore, để nó không vô tình bị bạn (hoặc người khác) cam kết một lần nữa:

.idea

Xóa nó khỏi kho lưu trữ

Thứ hai, chỉ xóa thư mục khỏi kho lưu trữ, nhưng không xóa nó cục bộ. Để đạt được điều đó, hãy làm những gì được liệt kê ở đây:

Xóa tệp khỏi kho Git mà không xóa tệp khỏi hệ thống tệp cục bộ

Gửi thay đổi cho người khác

Thứ ba, cam kết các .gitignoretập tin và loại bỏ .ideakhỏi kho lưu trữ. Sau đó đẩy nó đến (các) điều khiển từ xa.

Tóm lược

Toàn bộ quá trình sẽ như thế này:

$ 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

(tùy chọn bạn có thể thay thế dòng cuối cùng bằng git push some_remote, some_remotetên của điều khiển từ xa bạn muốn đẩy đến đâu)


4
Lưu ý: Nếu bạn nhận được thông báo fatal: pathspec '.idea' did not match any fileskhi bạn chạy git rm -r --cached .idea, hãy xóa thư mục .idea của bạn, kéo từ github và sau đó thử lại.
annedroiid

Nếu bạn gặp lỗi @nedroiid của 'không khớp với bất kỳ tệp nào', bạn có thể thử và thêm đường dẫn của nó. Giống như khi tôi xóa tệp cơ sở dữ liệu.yml, tôi chỉ đơn giản thực hiện 'git rm -r --cached config / database.yml'
Ruto Collins

Một số tệp trong thư mục .idea nên được kiểm tra trong repo của bạn. Xem github.com/github/gitignore/blob/master/Global/NH để biết gợi ý về JetBrains về cách .gitignore của bạn sẽ trông như thế nào.
tokenizer_fsj

2
Tôi không thể lấy thư mục này ra khỏi repo của chúng tôi cho cuộc sống của tôi ... các chi nhánh chuyển đổi tiếp tục theo dõi nó ... mọi người đã chạy nó trên nhiều chi nhánh và bất cứ khi nào bạn chuyển đổi chi nhánh ... git nghĩ rằng nó cần phải .. . tại một số điểm ... xóa thư mục .idea của bạn để .. trong ngắn hạn ... chuyển đổi các nhánh bây giờ về cơ bản là xóa sạch cài đặt cho chúng tôi. Tôi đã thử chạy nó trên master ... sau đó hợp nhất vào tất cả các nhánh .. nhưng ảnh tĩnh vẫn xóa sạch cài đặt.
nawlbergs

1
Chúng ta có một giải pháp vĩnh viễn cho việc này để đặt thành IntelliJ thành KHÔNG BAO GIỜ thêm .ideathư mục để cam kết các tệp không?
Serhat

88

Bạn có thể xóa nó khỏi repo và cam kết thay đổi.

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

Sau đó, bạn có thể đẩy nó vào điều khiển từ xa và mọi kiểm tra / nhân bản sau đó sẽ ổn.


10
Điều này làm việc cho tôi, trái ngược với câu trả lời được chấp nhận. Có lẽ chính teh git add -u đã tạo nên sự khác biệt.
Paolo Mioni

Bạn không cần dòng thứ 2.
kjdion84

Như những người khác nói, tôi đã không chạy dòng thứ hai. Làm việc như người ở! cảm ơn
blackkara

0

Bạn nên thêm tệp .gitignore vào dự án của bạn và thêm /.ideavào đó. Bạn nên thêm từng thư mục / tập tin trong một dòng.

Nếu bạn có tệp .gitignore hiện có thì bạn chỉ cần thêm một dòng mới vào tệp và đặt /.ideavào dòng mới.

Sau đó chạy git rm -r --cached .idealệnh.

Nếu bạn gặp lỗi, bạn có thể chạy git rm -r -f --cached .idealệnh. Sau khi tất cả chạy git add .và sau đó git commit -m "Removed .idea directory and added a .gitignore file"và cuối cùng đẩy các thay đổi bằng cách chạy git pushlệnh.


0

Tốt hơn là thực hiện điều này trên nhánh Master

Chỉnh sửa tập tin .gitignore. Thêm dòng dưới đây trong đó.

.idea

Xóa thư mục .idea khỏi repo từ xa. sử dụng lệnh dưới đây.

git rm -r --cached .idea

Để biết thêm thông tin. tham khảo: Xóa tệp khỏi kho lưu trữ Git mà không thực sự xóa chúng

Giai đoạn tập tin .gitignore. Sử dụng lệnh dưới đây

git add .gitignore

Cam kết

git commit -m 'Removed .idea folder'

Đẩy đến từ xa

git push origin master

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.