Yêu cầu đầu vào:
- 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.
- Cài đặt IntelliJ IDEA.
- Phân bổ một giờ thời gian cá nhân để đạt được sự thành thạo hoàn toàn.
Sao chép dự án cục bộ
Có hai lựa chọn ở đây:- 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.
- 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 địa chỉ dự án:
-
Mở IntelliJ IDEA và chọn "Nhận từ Kiểm soát phiên bản":
-
Sao chép và dán địa chỉ dự án:
-
Bạn sẽ được nhắc tạo một dự án IntelliJ IDEA. Chấp nhận đề nghị:
-
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ó :
-
Tiếp theo, bạn sẽ thấy màn hình tuyệt đẹp này: Bâ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ó.Hơ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 lư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: Đ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.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:- CTRL+T — Nhận các thay đổi mới nhất từ kho lưu trữ từ xa (git pull).
- 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).
- 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).
- 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.
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?-
Nhận tất cả các thay đổi hiện tại trong nhánh chính (ví dụ: "chính").
-
Từ nhánh chính này, tạo một nhánh riêng cho công việc của bạn.
-
Triển khai chức năng mới.
-
Đ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 ).
- Đẩy các thay đổi của bạn vào kho lưu trữ từ xa.
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 : Bâ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ủ.Tạo một nhánh mới dựa trên master
Mọi thứ đều đơn giản ở đây.-
Đ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 .
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 .
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: Cá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: Trướ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: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: Trong 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:Từ "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: Nế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: Ở đâ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:- chấp nhận của bạn — chỉ chấp nhận những thay đổi từ readme-improver.
- chấp nhận của họ - chỉ chấp nhận những thay đổi từ chủ.
- 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ỏ.
- Đây là những thay đổi từ readme-improver.
- 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.
- Những thay đổi từ nhánh chính.