2010-10-06 109 views
37

Tóm lại: thực tiễn tốt nhất để sử dụng Intellij Idea (9) và Git là gì?Thực tiễn tốt nhất để sử dụng Git với Intellij Idea

Context

Chúng tôi vừa nâng cấp lên ý tưởng 9 và đã bắt đầu sử dụng Git cho một tính năng mới trong dự án hiện có.

Chúng tôi chủ yếu sử dụng dòng lệnh git để tìm hiểu công cụ tốt hơn. Nhưng chúng tôi nghĩ rằng chúng tôi sẽ chọn tâm hive để tìm ra những thực hành tốt nhất cho git với ý tưởng.

Giao diện người dùng ý tưởng tương tự cho cả CVS và Git, nhưng các triển khai cơ bản khác nhau một chút.

Ví dụ câu hỏi

Ví dụ: -Với CVS, khi chúng tôi đã có nhiều phiên bản của một sản phẩm, mỗi người chúng ta sẽ có một bản sao cục bộ của 1-0, 2-0, 3-0 , vv các chi nhánh, mỗi chi nhánh có các tệp Intellij riêng của nó (ví dụ: .ipr, .iws, v.v.). Cách "git" dường như có một dự án và sử dụng 'git branch' để chuyển nhánh. Điều này là tốt, nhưng nó tạo ra chi phí rất lớn cho ý tưởng (vì nó phải tải lại mỗi tập tin đã thay đổi, bao gồm cả các lọ được chọn) khi bạn thay đổi các nhánh. Vì vậy: bạn vẫn có một dự án riêng biệt (với .git) cho mỗi "bản phát hành chính" hoặc có một dự án và sử dụng "git branch"?

-Ý tưởng hay là sử dụng Tự động chạy?

-Bạn có tự động thêm từng sửa đổi vào cam kết git của mình không? hoặc sử dụng "git add" sau?

-Bạn có rebase không?

Cách tốt nhất để hợp nhất?

-Bất kỳ gợi ý/mẹo/công việc nào khác cho bạn, v.v.

Comments cuối cùng

Chúng tôi vẫn "nghĩ trong cvs" vì vậy một phần của điều này được làm quen với git; một phần là nhận được sử dụng để Ui của Idea cho git.

Đây là những câu hỏi khá thô sơ vì chúng tôi vẫn sử dụng dòng comand chủ yếu. Ngoài ra tôi đã nghe ý tưởng 10 có tốt hơn/mạnh/nhanh hơn các công cụ tích hợp git

Cảm ơn

+3

Một tính năng tôi muốn có thư mục hệ thống bộ nhớ cache của intellij phụ thuộc vào mã băm của mã nguồn (như chính git được triển khai). Bằng cách này nó có thể resynch bộ nhớ cache của nó sét nhanh chóng sau khi chuyển đổi giữa các chi nhánh khác nhau ... ngay bây giờ nó là một nỗi đau. – ripper234

Trả lời

15

Đây là những gì chúng tôi nhận thấy sau vài tuần Git/Idea. Tôi đã tạo một wiki cộng đồng này. Vui lòng ném 2 kronor/centimos/pfennings/xu của bạn.

Lưu ý: Tôi đang trả lời câu hỏi của riêng mình vì tôi đã tìm kiếm các dấu đầu dòng dễ sử dụng đó.

Giả định

Idea là công cụ tuyệt vời. Không ai ở đây phàn nàn. Chỉ quan sát thôi.

Best Practices

  • Tại thời điểm này (9.0.3) Git với ý tưởng là chỉ đơn giản khó khăn hơn để sử dụng hơn SVN với Idea. Phần bắt nguồn từ sự phức tạp của Git (so với SVN), một phần vì các công cụ của Idea không làm mọi thứ trong thế giới git.

  • Vì vậy bạn sẽ cần phải sử dụng dòng lệnh

  • sáp nhập công cụ Idea của việc nhiều tốt hơn so với dòng lệnh sáp nhập hoặc thậm chí sử dụng mergetool (sử dụng meld hoặc mergetool). Lý do: bạn có nhiều freedeom hơn để làm việc trong 'môi trường ý tưởng' thay vì fixe một lint tại một thời điểm.

  • Hãy nhớ để đồng bộ hóa trong Idea (ctrl-alt-y) khi bạn cập nhật cây làm việc kể từ dòng lệnh

  • Watching Console Git để tìm hiểu thủ đoạn git ý tưởng của; Ý tưởng thực hiện lệnh git đó (điều khiển phiên bản xem, tab Console):.

dụ:

13:30:58.234: git log -M --follow --name-only --pretty=format:%H%x00%ct%x00%an%x20%x3C%ae%x3E%x00%cn%x20%x3C%ce%x3E%x00%s%n%n%b%x00 --encoding=UTF-8 -- src/jsp/workspaces/include/edit.jsp 
13:31:02.437: cd J:\projects\PE-GIT\pe 
13:31:02.437: git annotate -p -l -t -M HEAD -- src/jsp/workspaces/include/edit.jsp 
  • Thật không may Idea không có công cụ tốt cho "xung đột sáp nhập trong cam kết ngược dòng" trong 9.0 .3

Ví dụ:

  • Alice làm việc, cam kết (địa phương) tập tin A, cam kết tập tin B, cam kết nộp C
  • Bob làm việc, cam kết tập tin C, cam kết tập tin D, cam kết tập tin E
  • Alice đẩy cô thay đổi
  • Bob Kéo các thay đổi của anh ấy

Đến từ CVS/SVN, tôi mong đợi Công cụ tìm kiếm tiện dụng sẽ xuất hiện. Không. Thay vì git/idea ném lên một lá cờ đỏ, tôi thường kết thúc bằng cách sử dụng "git mergetool" (meld od trên linux, tortoiesmerge trên windows).

Lưu ý: Có lẽ Idea cung cấp một cách tốt hơn. Hãy đặt tôi thẳng. Lưu ý đến động lực: bạn có thể thiết lập .gitconfig để sử dụng công cụ tìm khác biệt của Idea không?

Cất giữ

  • Ý tưởng "xiên" bản sao chức năng "Git Stash". Cả hai đều giống nhau. Cả hai đều sử dụng các bản vá lỗi. Bạn có thể muốn sử dụng cái này hay cái kia. Tôi chưa tìm ra lợi thế của một hoặc các
  • khác Dự án

Big Cũ

  • Nếu bạn đang làm việc trên một dự án cũ thập kỷ gần đây di cư đến Git, với các tập tin jar kiểm tra vào scm (ví dụ trước đó đã được kiểm tra vào CVS/SVN, trong đó log4j-1.0.jar nằm trong BRANCH-2-0 và đường chính có log4j-9.0.jar), PROCEED WITH CAUTION nếu bạn muốn thanh toán "phiên bản 2.0" của dự án của bạn. Ý tưởng cần phải dỡ bỏ tất cả các lọ "đầu" và tải lại các lọ-check-in-at-2.0. Điều này mất bao giờ hết.

thứ nhỏ khác

  • Các menu ý tưởng/UI vẫn cho thấy "git init ..." mặc dù bạn đã khởi tạo Git. Đó là khó hiểu, nhưng bỏ qua nó.

  • Bạn không thể có cùng một cây làm việc trong cả Git và CVS/SVN (mặc dù giao diện người dùng dường như ngụ ý như vậy).Tôi/chúng tôi đã thử điều này trong giai đoạn đầu tiên "hãy thử git và vẫn sử dụng CVS làm kế hoạch dự phòng". Nó không hoạt động

+0

Tôi quay trở lại sử dụng Intellij và Git trong một môi trường làm việc mới, và đang tìm cách Intellij xử lý stash như thế nào. Với Shelve tôi thường Shelve một hoặc hai tập tin đã có thay đổi gỡ lỗi, nhưng sử dụng Stash trong Intellij tùy chọn duy nhất là để Stash tất cả các thay đổi. –

4

Trước tiên, bạn có thể có nhiều thông tin về git trên những cuốn sách tham khảo trực tuyến miễn phí:

Lưu ý: Git "thực hành tốt" và quy trình làm việc hoàn toàn độc lập với IDE bạn sử dụng. May mắn thay, IDEA là một IDE tuyệt vời và hầu hết các chức năng hữu dụng của Git đều được triển khai tốt (rebase, stash, v.v.)

Về các câu hỏi về luồng git, bạn đang nghĩ như với VCS tập trung.

Git là Phân phối Hệ thống kiểm soát phiên bản. Vì vậy, bạn phải "nghĩ địa phương đầu tiên".

Đối với cam kết, Nó không thực sự quan trọng nếu bạn thêm từng tệp vào chỉ mục ngay lập tức hoặc sau này, nếu bạn cam kết thường xuyên hay không. Đây là công việc địa phương của bạn và bạn có thể sắp xếp nó theo ý muốn.

Điều quan trọng là phải có cam kết sạch khi bạn chuẩn bị đẩy công việc của bạn (hiển thị nó cho các nhà phát triển khác).

Khi bạn chuẩn bị đẩy, bạn có thể sửa tất cả lịch sử của mình kể từ lần đẩy cuối cùng (ví dụ như rebase).

Ví dụ (nếu bạn quên sửa đổi trước cam kết): - cam kết "một chức năng siêu" - cam kết "oups: quên một tập tin" - cam kết "sửa lỗi"

Trước khi đẩy luận 3 cam kết, bạn có thể hợp nhất các cam kết, sử dụng rebase tương tác với IDEA. Vì vậy, 2 cam kết cuối cùng sẽ được bao gồm trong lần đầu tiên.

Lưu ý: bạn có thể sửa đổi lịch sử của mình trong khi bạn chưa đẩy. Sau khi bạn vẫn có thể nhưng đó là một ý tưởng rất tồi (và nếu bạn không ép Git, push tiếp theo sẽ bị từ chối), vì nó có thể phá hủy lịch sử đồng nghiệp của bạn (nếu họ đã lấy/sáp nhập công việc của bạn).

Về một dòng chảy làm việc chung Git, tôi recommand bạn bài viết này tốt: http://nvie.com/posts/a-successful-git-branching-model/

+0

Cảm ơn bạn đã cân nhắc. Nhận xét của bạn thường hữu ích và bài viết phân nhánh có nhiều thông tin. – user331465

+5

Cảm ơn bạn đã cân nhắc. Nhận xét của bạn nói chung hữu ích và bài viết phân nhánh có nhiều thông tin. Điều đó nói rằng, câu hỏi của tôi rất cụ thể liên quan đến "sử dụng git với ý tưởng", không phải "làm cách nào để sử dụng git?" Tôi đặc biệt tìm kiếm các điểm thực dụng về sử dụng giao diện người dùng Idea-for-git so với sử dụng git từ dòng lệnh, nghĩa là "mẹo và kỹ thuật, nguy hiểm và cạm bẫy", "những gì phù hợp nhất với bạn", "những gì cần tránh dựa trên trải nghiệm ", v.v. Một lần nữa, cảm ơn vì đã cung cấp thông tin chi tiết của bạn. – user331465

Các vấn đề liên quan