CodeGym /Blog Java /Ngẫu nhiên /Một sự kết hợp trời định: Git và IntelliJ IDEA
John Squirrels
Mức độ
San Francisco

Một sự kết hợp trời định: Git và IntelliJ IDEA

Xuất bản trong nhóm
Bám sát truyền thống đã có, tôi xin chào các bạn với tư cách là các kỹ sư phần mềm cao cấp trong tương lai. Một sự kết hợp trời định: Git và IntelliJ IDEA - 1Bài viết hôm nay là phần mở rộng hợp lý của bài viết của tôi trên Git . Trong bài viết về Git, tôi đã mô tả cách làm việc với Git trên dòng lệnh. Hôm nay tôi sẽ chỉ cho bạn cách làm tất cả trong IntelliJ IDEA. Khi bắt đầu hành trình với tư cách là một nhà phát triển, tôi đã sử dụng dòng lệnh và nghĩ rằng tôi không cần GUI cho việc này. Rốt cuộc, mọi thứ đều rõ ràng như nó vốn có... Nhưng đó là thời điểm tôi bắt đầu sử dụng Git trong IntelliJ IDEA... Ngay từ đầu, tôi muốn nói rằng tôi đang mô tả trải nghiệm cá nhân của mình. Có một số cách để giải quyết bất kỳ vấn đề nào trong IntelliJ IDEA. Nếu bạn biết một cách tốt hơn những gì tôi sẽ mô tả trong bài viết, hãy viết nó trong phần bình luận và chúng ta sẽ thảo luận về nó.

Yêu cầu đầu vào:

  1. Hãy đọc, làm theo và hiểu bài viết của tôi về Git . Điều này sẽ giúp đảm bảo rằng mọi thứ đã được thiết lập và sẵn sàng hoạt động.
  2. Cài đặt IntelliJ IDEA.
  3. Phân bổ một giờ thời gian cá nhân để đạt được sự thành thạo hoàn toàn.
Hãy làm việc với dự án demo mà tôi đã sử dụng cho bài viết về Git. CẬP NHẬT:Tại thời điểm xuất bản, giao diện người dùng GitHub mới sẽ khả dụng và một số biểu tượng sẽ không xuất hiện ở nơi chúng được hiển thị trong bài viết. Đừng lo lắng: bạn chỉ cần không chuyển sang giao diện người dùng mới hoặc tìm kiếm chúng.

Sao chép dự án cục bộ

Có hai lựa chọn ở đây:
  1. Nếu bạn đã có tài khoản GitHub và muốn đẩy thứ gì đó sau này, tốt hơn là rẽ nhánh dự án và sao chép bản sao của riêng bạn.
  2. Sao chép kho lưu trữ của tôi và thực hiện mọi thứ cục bộ mà không có khả năng đẩy toàn bộ nội dung lên máy chủ. Rốt cuộc, đây là kho lưu trữ của tôi :)
Để sao chép một dự án từ GitHub, bạn cần sao chép liên kết dự án và chuyển nó tới IntelliJ IDEA:
  1. Sao chép địa chỉ dự án:

    Một sự kết hợp trời định: Git và IntelliJ IDEA - 2
  2. Mở IntelliJ IDEA và chọn "Nhận từ Kiểm soát phiên bản":

    Một sự kết hợp trời định: Git và IntelliJ IDEA - 3
  3. Sao chép và dán địa chỉ dự án:

    Một sự kết hợp trời định: Git và IntelliJ IDEA - 4
  4. Bạn sẽ được nhắc tạo một dự án IntelliJ IDEA. Chấp nhận đề nghị:

    Một sự kết hợp trời định: Git và IntelliJ IDEA - 5
  5. Vì không có hệ thống xây dựng và điều đó nằm ngoài phạm vi của bài viết này, chúng tôi chọn Tạo dự án từ các nguồn hiện có :

    Một sự kết hợp trời định: Git và IntelliJ IDEA - 6
  6. Tiếp theo, bạn sẽ thấy màn hình tuyệt đẹp này: Một sự kết hợp trời định: Git và IntelliJ IDEA - 7Bây giờ chúng ta đã tìm ra cách nhân bản, bạn có thể xem xung quanh.

Cái nhìn đầu tiên về IntelliJ IDEA dưới dạng giao diện người dùng Git

Hãy xem kỹ dự án nhân bản: bạn đã có thể nhận được rất nhiều thông tin về hệ thống kiểm soát phiên bản. Đầu tiên, chúng ta có ngăn Kiểm soát phiên bản ở góc dưới bên trái. Tại đây, bạn có thể tìm thấy tất cả các thay đổi cục bộ và nhận danh sách các lần xác nhận (tương tự như "git log"). Hãy chuyển sang thảo luận về Nhật ký . Có một hình dung nhất định giúp chúng ta hiểu chính xác quá trình phát triển đã diễn ra như thế nào. Ví dụ: bạn có thể thấy rằng một nhánh mới đã được tạo với tiêu đề được thêm vào txt cam kết, sau đó được hợp nhất vào nhánh chính. Nếu bạn nhấp vào một cam kết, bạn có thể thấy ở góc bên phải tất cả thông tin về cam kết: tất cả các thay đổi và siêu dữ liệu của nó.Một sự kết hợp trời định: Git và IntelliJ IDEA - 8Hơn nữa, bạn có thể thấy những thay đổi thực tế. Chúng tôi cũng thấy rằng một cuộc xung đột đã được giải quyết ở đó. IDEA cũng trình bày điều này rất tốt. Nếu bạn nhấp đúp vào tệp đã được thay đổi trong quá trình xác nhận này, chúng tôi sẽ xem xung đột đã được giải quyết như thế nào: Chúng tôi Một sự kết hợp trời định: Git và IntelliJ IDEA - 9lưu ý rằng ở bên trái và bên phải, chúng tôi có hai phiên bản của cùng một tệp cần được hợp nhất thành một. Và ở giữa, chúng ta có kết quả hợp nhất cuối cùng. Khi một dự án có nhiều nhánh, cam kết và người dùng, bạn cần tìm kiếm riêng biệt theo nhánh, người dùng và ngày: Một sự kết hợp trời định: Git và IntelliJ IDEA - 10Điều cuối cùng tôi muốn giải thích trước khi chúng ta bắt đầu là làm thế nào để hiểu chúng ta đang ở nhánh nào. Tôi sẽ cung cấp cho bạn một phút để tìm ra nó... Bạn đã tìm thấy nó? Bỏ cuộc? :D Ở góc dưới bên phải, có một nút có tên Git: master. Bất cứ thứ gì theo sau "Git:" là nhánh hiện tại. Nếu bạn nhấp vào nút, bạn có thể thực hiện rất nhiều điều hữu ích: chuyển sang nhánh khác, tạo nhánh mới, đổi tên nhánh hiện có, v.v.Một sự kết hợp trời định: Git và IntelliJ IDEA - 11

Làm việc với một kho lưu trữ

phím nóng hữu ích

Đối với công việc trong tương lai, bạn cần nhớ một vài phím nóng rất hữu ích:
  1. CTRL+T — Nhận các thay đổi mới nhất từ ​​kho lưu trữ từ xa (git pull).
  2. CTRL+K — Tạo một cam kết / xem tất cả các thay đổi hiện tại. Điều này bao gồm cả các tệp không bị theo dõi và đã sửa đổi (xem bài viết của tôi về git, giải thích điều này) (git commit).
  3. CTRL+SHIFT+K — Đây là lệnh đẩy các thay đổi vào kho lưu trữ từ xa. Tất cả các xác nhận được tạo cục bộ và chưa có trong kho lưu trữ từ xa sẽ được đẩy (git đẩy).
  4. ALT+CTRL+Z — Khôi phục các thay đổi trong một tệp cụ thể về trạng thái của lần xác nhận cuối cùng được tạo trong kho lưu trữ cục bộ. Nếu bạn chọn toàn bộ dự án ở góc trên bên trái, bạn có thể khôi phục các thay đổi trong tất cả các tệp.
Một sự kết hợp trời định: Git và IntelliJ IDEA - 12

Chúng ta muốn gì?

Để hoàn thành công việc, chúng ta cần nắm vững một kịch bản cơ bản được sử dụng ở mọi nơi. Mục tiêu là triển khai chức năng mới trong một nhánh riêng biệt và sau đó đẩy nó tới một kho lưu trữ từ xa (sau đó bạn cũng cần tạo một yêu cầu kéo tới nhánh chính, nhưng điều đó nằm ngoài phạm vi của bài viết này). Điều gì là cần thiết để làm điều này?
  1. Nhận tất cả các thay đổi hiện tại trong nhánh chính (ví dụ: "chính").

  2. Từ nhánh chính này, tạo một nhánh riêng cho công việc của bạn.

  3. Triển khai chức năng mới.

  4. Đi đến nhánh chính và kiểm tra xem có bất kỳ thay đổi mới nào trong khi chúng tôi đang làm việc không. Nếu không, thì mọi thứ đều ổn. Nhưng nếu có thay đổi, thì chúng tôi làm như sau: đi đến nhánh đang hoạt động và khởi động lại các thay đổi từ nhánh chính sang nhánh của chúng tôi. Nếu mọi thứ suôn sẻ, thì thật tuyệt. Nhưng hoàn toàn có thể xảy ra xung đột. Khi nó xảy ra, chúng chỉ có thể được giải quyết trước mà không lãng phí thời gian trong kho lưu trữ từ xa.

    Bạn đang tự hỏi tại sao bạn nên làm điều này? Đó là cách cư xử tốt và ngăn xung đột xảy ra sau khi đẩy nhánh của bạn đến kho lưu trữ cục bộ (tất nhiên, có khả năng xung đột vẫn xảy ra, nhưng nó sẽ nhỏ hơn nhiều ).

  5. Đẩy các thay đổi của bạn vào kho lưu trữ từ xa.
Điều gì xảy ra tiếp theo phụ thuộc vào nhiệm vụ và trí tưởng tượng của bạn.

Nhận các thay đổi từ máy chủ từ xa?

Tôi đã thêm mô tả vào README bằng một cam kết mới và muốn nhận những thay đổi này. Nếu các thay đổi được thực hiện cả trong kho lưu trữ cục bộ và kho lưu trữ từ xa, thì chúng tôi được mời chọn giữa hợp nhất và khởi động lại. Chúng tôi chọn hợp nhất. Nhập CTRL+T : Một sự kết hợp trời định: Git và IntelliJ IDEA - 13Bây giờ bạn có thể xem README đã thay đổi như thế nào, tức là các thay đổi từ kho lưu trữ từ xa đã được kéo vào và ở góc dưới bên phải, bạn có thể xem tất cả chi tiết về các thay đổi đến từ máy chủ.Một sự kết hợp trời định: Git và IntelliJ IDEA - 14

Tạo một nhánh mới dựa trên master

Mọi thứ đều đơn giản ở đây.
  1. Đi đến góc dưới cùng bên phải và nhấp vào Git: master . Chọn + Chi nhánh mới .

    Một sự kết hợp trời định: Git và IntelliJ IDEA - 15
  2. Bỏ chọn hộp kiểm Chi nhánh thanh toán và nhập tên của chi nhánh mới. Đối với tôi, nó sẽ là readme-improver .

    Một sự kết hợp trời định: Git và IntelliJ IDEA - 16

    Git: master sau đó sẽ đổi thành Git: readme-improver .

Hãy mô phỏng công việc song song

Để xung đột xuất hiện, ai đó phải tạo ra chúng :D Tôi sẽ chỉnh sửa README bằng một cam kết mới thông qua trình duyệt, do đó mô phỏng công việc song song. Như thể ai đó đã thực hiện các thay đổi trong cùng một tệp khi tôi đang làm việc với nó. Kết quả sẽ là xung đột. Tôi sẽ bỏ từ "fully" khỏi dòng 10.

Thực hiện chức năng của chúng tôi

Nhiệm vụ của chúng ta là thay đổi README và thêm mô tả cho bài viết mới. Nghĩa là, công việc trong Git đi qua IntelliJ IDEA. Thêm điều này: Một sự kết hợp trời định: Git và IntelliJ IDEA - 17Các thay đổi đã được thực hiện. Bây giờ chúng ta có thể tạo một cam kết. Nhấn CTRL+K , thao tác này cho chúng ta: Một sự kết hợp trời định: Git và IntelliJ IDEA - 18Trước khi tạo một cam kết, chúng ta cần xem kỹ cửa sổ này cung cấp những gì. Tôi đã thêm các mũi tên màu đỏ để chỉ cho bạn nơi cần tìm. Có rất nhiều thứ thú vị ở đây. Trong phần Thông báo cam kết , chúng tôi viết văn bản liên quan đến cam kết. Sau đó, để tạo nó, chúng ta cần nhấp vào Cam kết. Tôi vẫn chưa tìm ra cách thực hiện việc này bằng phím nóng. Nếu ai đó tìm ra cách, hãy viết thư cho tôi - điều đó sẽ khiến tôi rất vui. Chúng tôi viết rằng README đã thay đổi và tạo cam kết. Một cảnh báo bật lên ở góc dưới bên trái với tên của cam kết:Một sự kết hợp trời định: Git và IntelliJ IDEA - 19

Kiểm tra xem nhánh chính có thay đổi không

Chúng tôi đã hoàn thành nhiệm vụ của mình. Nó hoạt động. Chúng tôi đã viết bài kiểm tra. Mọi thứ đều ổn. Nhưng trước khi đẩy lên máy chủ, chúng ta vẫn cần kiểm tra xem có bất kỳ thay đổi nào trong nhánh chính trong thời gian chờ đợi hay không. Làm thế nào điều đó có thể xảy ra? Khá dễ dàng: ai đó nhận nhiệm vụ sau bạn và ai đó hoàn thành nhiệm vụ đó nhanh hơn bạn hoàn thành nhiệm vụ của mình. Vì vậy, chúng ta cần phải đi đến chi nhánh chính. Để thực hiện việc này, chúng ta cần thực hiện những gì được hiển thị ở góc dưới bên phải trong ảnh chụp màn hình bên dưới: Một sự kết hợp trời định: Git và IntelliJ IDEA - 20Trong nhánh chính, nhấn CTRL+T để nhận các thay đổi mới nhất của nhánh đó từ máy chủ từ xa. Nhìn vào những thay đổi, bạn có thể dễ dàng thấy điều gì đã xảy ra:Một sự kết hợp trời định: Git và IntelliJ IDEA - 21Từ "fully" đã bị xóa. Có thể ai đó từ bộ phận tiếp thị đã quyết định rằng nó không nên được viết như vậy và giao cho các nhà phát triển nhiệm vụ cập nhật nó. Bây giờ chúng tôi có một bản sao cục bộ của phiên bản mới nhất của nhánh chính. Quay trở lại readme-improver . Bây giờ chúng ta cần khởi động lại các thay đổi từ nhánh chính sang nhánh của chúng ta. Chúng tôi làm điều này: Một sự kết hợp trời định: Git và IntelliJ IDEA - 22Nếu bạn đã làm đúng mọi thứ và làm theo tôi, kết quả sẽ hiển thị xung đột trong tệp README: Một sự kết hợp trời định: Git và IntelliJ IDEA - 23Ở đây chúng tôi cũng có rất nhiều thông tin để hiểu và tìm hiểu. Hiển thị ở đây là danh sách các tệp (trong trường hợp của chúng tôi là một tệp) có xung đột. Chúng ta có thể chọn từ ba tùy chọn:
  1. chấp nhận của bạn — chỉ chấp nhận những thay đổi từ readme-improver.
  2. chấp nhận của họ - chỉ chấp nhận những thay đổi từ chủ.
  3. hợp nhất — tự chọn những gì bạn muốn giữ lại và những gì cần loại bỏ.
Không rõ những gì đã thay đổi. Nếu có những thay đổi là nhánh chính, thì chúng phải cần thiết ở đó, vì vậy chúng tôi không thể đơn giản chấp nhận những thay đổi của mình. Theo đó, chúng tôi chọn hợp nhất : Một sự kết hợp trời định: Git và IntelliJ IDEA - 24Ở đây chúng ta có thể thấy rằng có ba phần:
  1. Đây là những thay đổi từ readme-improver.
  2. Kết quả hợp nhất. Hiện tại, đó là những gì đã tồn tại trước khi có những thay đổi.
  3. Những thay đổi từ nhánh chính.
Chúng tôi cần tạo ra một kết quả hợp nhất sẽ làm hài lòng tất cả mọi người. Xem lại những gì đã được thay đổi TRƯỚC những thay đổi của chúng tôi, chúng tôi nhận ra rằng họ chỉ cần xóa từ "fully". Ổn không có vấn đề! Điều đó có nghĩa là chúng tôi cũng sẽ xóa nó trong kết quả đã hợp nhất và sau đó thêm các thay đổi của chúng tôi. Khi chúng tôi sửa kết quả đã hợp nhất, chúng tôi có thể nhấp vào Áp dụng . Sau đó, một thông báo sẽ bật lên, cho chúng tôi biết rằng cuộc nổi dậy đã thành công: Một sự kết hợp trời định: Git và IntelliJ IDEA - 25Ở đó! Chúng tôi đã giải quyết xung đột đầu tiên của mình thông qua IntelliJ IDEA :D

Đẩy các thay đổi đến máy chủ từ xa

Bước tiếp theo là đẩy các thay đổi đến máy chủ từ xa và tạo yêu cầu kéo. Để làm điều này, chỉ cần nhấn CTRL+SHIFT+K . Sau đó, chúng tôi nhận được: Một sự kết hợp trời định: Git và IntelliJ IDEA - 26Ở bên trái, sẽ có một danh sách các xác nhận chưa được đẩy vào kho lưu trữ từ xa. Bên phải sẽ là tất cả các tệp đã thay đổi. Và thế là xong! Nhấn Đẩy và bạn sẽ cảm thấy hạnh phúc :) Nếu đẩy thành công, bạn sẽ thấy thông báo như thế này ở góc dưới bên phải:Một sự kết hợp trời định: Git và IntelliJ IDEA - 27

phần thưởng

Lúc đầu, tôi không muốn thêm việc tạo yêu cầu kéo vào bài viết này, nhưng nó không hoàn chỉnh nếu không có nó. Vì vậy, hãy truy cập kho lưu trữ GitHub (tất nhiên là của bạn :)) và chúng tôi thấy rằng GitHub đã biết những gì chúng tôi muốn: Một sự kết hợp trời định: Git và IntelliJ IDEA - 28Nhấp vào So sánh & yêu cầu kéo . Sau đó nhấp vào Tạo yêu cầu kéo . Vì chúng ta đã giải quyết xung đột trước nên bây giờ khi tạo pull request, chúng ta có thể merge nó ngay lập tức: Một sự kết hợp trời định: Git và IntelliJ IDEA - 29Và đó là tất cả những gì tôi muốn nói lần này. Tất nhiên, tôi chỉ mở cửa cho bạn một chút và cho bạn thấy một phần nhỏ. Bạn sẽ tìm hiểu về phần còn lại khi bạn cần. Tôi có thói quen mời bạn theo dõi tôi trên GitHub, nơi tôi đăng các dự án của mình liên quan đến các công nghệ khác nhau mà tôi sử dụng tại nơi làm việc. Gần đây tôi đã đạt được một thành tích cá nhân: một trong những dự án của tôi đã được hơn một trăm nhà phát triển tặng sao. Có một cảm giác vui mừng lạ thường khi bạn biết rằng những gì bạn đã làm đang bị người khác lợi dụng. Và sử dụng nó cho tốt.

Liên kết hữu ích

  1. CodeGym: Bắt đầu với Git: hướng dẫn toàn diện cho người mới
  2. GitHub: Dự án demo để thực hành
  3. JetBrains: Thiết lập Kho lưu trữ Git
  4. GitHub: Tài khoản của tôi
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION