Những ghi chú giới thiệu cần thiết:
- Đọc, lặp lại và hiểu bài viết 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.
- Dành một giờ thời gian cá nhân để hấp thụ 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à bạn nên phân nhánh dự án cho chính mình và sao chép bản sao của mình. Cách tạo một nhánh - Tôi đã mô tả trong chương này một ví dụ về quy trình phân nhánh .
- Sao chép từ 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 sẽ 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ỉ vào dự án:
-
Bạn sẽ được nhắc tạo một dự án Intellij IDEA. Chúng tôi chấp nhận lời đề nghị:
-
Vì không có hệ thống xây dựng và đây không phải là phạm vi của bài viết, hãy chọn Tạo dự án từ các nguồn hiện có :
-
Tiếp theo sẽ có một bức tranh sơn dầu như thế này: Chúng ta đã sắp xếp xong nhân bản, bây giờ chúng ta có thể nhìn xung quanh.
Trước tiên hãy xem Intellij IDEA dưới dạng giao diện người dùng Git
Hãy xem xét kỹ hơn 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 là bảng Version Control ở góc dưới bên trái. Trong đó, 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 cam kết (tương tự như nhật ký git). Hãy chuyển sang bài giảng Log . Có một thành phần trực quan nhất định giúp 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 cam kết thêm vào txt , 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, ở góc bên phải, bạn có thể thấy 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 đã được thực hiện. Hơn nữa, xung đột đã được giải quyết ở đó. IDEA cũng thể hiện điều này một cách hoàn hảo. Nếu bạn nhấp đúp vào tệp đã được thay đổi trong lần cam kết này, chúng ta sẽ thấy xung đột đã được giải quyết như thế nào: Điều đáng chú ý là ở bên phải và bên trá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 là kết quả cuối cùng. Khi một dự án có nhiều chi nhánh, commit và người dùng làm việc trong dự án, bạn cần tìm kiếm riêng theo chi nhánh (chi nhánh), người dùng (người dùng) và ngày (ngày): Và điều cuối cùng tôi muốn giải thích trước khi bắt đầu là hiểu như thế nào chúng tôi đang ở chi nhánh nào. Tôi sẽ cho bạn một phút để tìm kiếm... bạn có tìm thấy nó không? Bạn có đang bỏ cuộc không? :D Ở góc dưới bên phải có nút Git: master , trong đó sau Git: nó hiển thị dự án hiện đang ở nhánh nào. 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 kho lưu trữ
Phím nóng hữu ích
Để tiếp tục làm việc, bạn cần nhớ một số phím nóng rất hữu ích:- ctrl + t - nhận những thay đổi mới nhất từ kho lưu trữ từ xa (git pull).
- ctrl + k - cam kết/xem tất cả các thay đổi hiện có. Điều này bao gồm cả tệp không bị theo dõi và tệp đã sửa đổi (xem bài viết của tôi về git, điều này được mô tả ở đó) (git commit).
- ctrl + shift + k là lệnh để đẩy các thay đổi sang kho lưu trữ từ xa. Tất cả các cam kết được tạo cục bộ và chưa có trên điều khiển từ xa sẽ được cung cấp để đẩy (git push).
- 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 cam kết được tạo cuối cùng 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 đối với tất cả các tệp.
Chúng ta muốn gì?
Để làm việc, chúng ta cần nắm vững chữ viết cơ bản, vốn được sử dụng ở mọi nơi. Nhiệm vụ là triển khai chức năng mới trong một nhánh riêng biệt và đẩy nó đến một kho lưu trữ từ xa (sau đó bạn cần tạo một yêu cầu kéo khác cho nhánh chính, nhưng điều này nằm ngoài phạm vi bài viết của chúng tôi). Tôi cần phải làm gì?-
Nhận tất cả các thay đổi hiện có trong nhánh chính (ví dụ: chính).
-
Dựa trên cái chính này, hãy tạo một cái riêng cho công việc của bạn.
-
Triển khai chức năng mới.
-
Đến chi nhánh chính và kiểm tra xem có thay đổi gì mới trong khi bạn đang làm việc không. Nếu không, thì mọi thứ đều ổn, và nếu đúng, thì chúng ta làm như sau: chúng ta đi đến nhánh đang hoạt động và thực hiện lại các thay đổi từ nhánh chính sang nhánh của chúng ta. Nếu mọi việc suôn sẻ thì tuyệt vời. Nhưng cũng có thể có xung đột. Và chúng có thể được giải quyết trước mà không lãng phí thời gian vào kho lưu trữ từ xa.
Có vẻ như tại sao lại làm điều này? Đây là một quy tắc có hình thức tốt, giúp ngăn ngừa xung đột phát sinh 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 chúng vẫn tồn tại, nhưng sẽ ít hơn nhiều ).
- Đẩy các thay đổi của bạn tới một kho lưu trữ từ xa.
Nhận thay đổi từ máy chủ từ xa?
Tôi đã thêm mô tả vào README với một cam kết mới và muốn nhận những thay đổi này. Một lựa chọn được đưa ra giữa hợp nhất và rebase nếu các thay đổi được thực hiện trong cả kho lưu trữ cục bộ và từ xa. Chọn một sự hợp nhất. Nhập ctrl + t : Kết quả là bạn có thể thấy README đã thay đổi như thế nào, tức là. những thay đổi từ kho lưu trữ từ xa đã được kéo lên và ở góc dưới bên phải, bạn có thể xem tất cả chi tiết về những 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 tới góc dưới bên phải và nhấp vào Git: master , chọn + New Branch .
Để lại hộp kiểm chi nhánh Checkout và viết tên của chi nhánh mới. Đối với tôi nó sẽ là readme-improver .
Sau này, Git: master sẽ đổi thành Git: readme-improver .
Mô phỏng công việc song song
Để xung đột xuất hiện, phải có ai đó 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 và do đó mô phỏng công việc song song. Họ nói rằng ai đó trong quá trình làm việc của tôi đã thực hiện các thay đổi đối với cùng một tệp với tôi, điều này sẽ dẫn đến xung đột. Tôi sẽ xóa từ “hoàn toàn” khỏi dòng 10.Triển khai chức năng của bạn
Nhiệm vụ 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 được thực hiện thông qua Intellij IDEA. Thêm điều này: Các thay đổi đã hoàn tất, bây giờ bạn có thể tạo một cam kết. Nhấn phím nóng ctrl + k , chúng ta nhận được: Trước khi tạo một cam kết, bạn cần xem kỹ những gì được cung cấp trong cửa sổ này. Tôi đặc biệt đã thêm một mũi tên để chỉ cho bạn nơi cần tìm. Có rất nhiều điều thú vị ở đó. Trong phần Thông báo cam kết , chúng tôi viết văn bản của cam kết và để nó được tạo, bạn cần nhấp vào nút Cam kết . Mình vẫn chưa tìm được cách làm việc này bằng phím nóng nên nếu ai đó tìm ra thì viết mình sẽ rất vui. Chúng tôi viết rằng README đã thay đổi và tạo một cam kết. Kết quả là một cảnh báo sẽ 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ụ, 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ủ, bạn cần kiểm tra xem có bất kỳ thay đổi nào ở nhánh chính trong thời gian này hay không. Làm sao điều này xảy ra được? Rất đơn giản: ai đó được giao nhiệm vụ sau bạn và người này đã làm việc đó nhanh hơn bạn. Vì vậy, chúng tôi chuyển sang nhánh chính. Để thực hiện việc này, bạn cần thực hiện ở góc dưới bên phải những gì được hiển thị trong hình bên dưới: Trong nhánh chính, nhấn ctrl + t để nhận những thay đổi mới nhất từ máy chủ từ xa. Nếu bạn nhìn vào những thay đổi đã được thực hiện, bạn có thể dễ dàng nhận thấy điều gì đã xảy ra: Như bạn có thể thấy, từ “hoàn toàn” đã bị xóa. Có lẽ ai đó ở bộ phận tiếp thị đã quyết định rằng nó không thể đượ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ó phiên bản mới nhất của nhánh chính tại địa phương. Hãy quay lại readme-improver . Bây giờ chúng ta cần thực hiện 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: Nếu bạn làm theo đúng mọi thứ với tôi, kết quả sẽ là xung đột trong tệp README: Ở đây cũng có rất nhiều thông tin cần được hiểu và tiếp thu. Điều này hiển thị một danh sách (trong trường hợp của chúng tôi là một phần tử) các tệp có xung đột. Chúng ta có thể chọn ba phương á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 - chọn cho mình những gì cần giữ và những gì cần loại bỏ.
- Đây là những thay đổi từ readme-improver.
- Kết quả. Bây giờ nó vẫn giống như trước khi thay đổi.
- Những thay đổi từ nhánh chính.
GO TO FULL VERSION