CodeGym/Blog Java/Ngẫu nhiên/Bắt đầu với Git: hướng dẫn toàn diện cho người mới
John Squirrels
Mức độ
San Francisco

Bắt đầu với Git: hướng dẫn toàn diện cho người mới

Xuất bản trong nhóm

Thay cho lời giới thiệu

Xin chào! Hôm nay chúng ta sẽ nói về một hệ thống kiểm soát phiên bản, cụ thể là Git. Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 1Bạn chẳng liên quan gì đến lập trình nếu bạn không biết/hiểu về Git. Nhưng cái hay là bạn không cần phải ghi nhớ tất cả các lệnh và tính năng của Git trong đầu để có thể tiếp tục làm việc. Bạn cần biết một tập hợp các lệnh sẽ giúp bạn hiểu mọi thứ đang diễn ra.

Khái niệm cơ bản về Git

Git là một hệ thống kiểm soát phiên bản phân tán cho mã của chúng tôi. Tại sao chúng ta cần nó? Các nhóm phân tán cần một số loại hệ thống để quản lý công việc của họ. Nó là cần thiết để theo dõi những thay đổi xảy ra theo thời gian. Nghĩa là, chúng ta cần có thể xem từng bước những tệp nào đã thay đổi và thay đổi như thế nào. Điều này đặc biệt quan trọng khi bạn đang điều tra những gì đã thay đổi trong ngữ cảnh của một tác vụ đơn lẻ, giúp bạn có thể hoàn nguyên các thay đổi.

Cài đặt Git

Hãy cài đặt Java trên máy tính của bạn.

Cài đặt trên Windows

Như thường lệ, bạn cần tải xuống và chạy một tệp exe. Mọi thứ ở đây đều đơn giản: nhấp vào liên kết Google đầu tiên , thực hiện cài đặt, thế là xong. Để làm điều này, chúng tôi sẽ sử dụng bảng điều khiển bash do Windows cung cấp. Trên Windows, bạn cần chạy Git Bash. Đây là giao diện của nó trong Menu Bắt đầu: Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 2Bây giờ, đây là dấu nhắc lệnh mà bạn có thể làm việc với. Để tránh phải vào thư mục với dự án mỗi lần để mở Git ở đó, bạn có thể mở dấu nhắc lệnh trong thư mục dự án bằng nút chuột phải với đường dẫn chúng tôi cần:Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 3

Cài đặt trên Linux

Thông thường Git là một phần của các bản phân phối Linux và đã được cài đặt sẵn, vì nó là một công cụ ban đầu được viết để phát triển nhân Linux. Nhưng có những tình huống khi nó không phải là. Để kiểm tra, bạn cần mở terminal và viết: git --version. Nếu bạn nhận được câu trả lời dễ hiểu, thì không cần cài đặt gì nữa. Mở một thiết bị đầu cuối và cài đặt Git trên Ubuntu . Tôi đang làm việc trên Ubuntu, vì vậy tôi có thể cho bạn biết phải viết gì cho nó: sudo apt-get install git.

Cài đặt trên macOS

Ở đây cũng vậy, trước tiên bạn cần kiểm tra xem Git đã có chưa. Nếu bạn chưa có, cách dễ nhất để có nó là tải xuống phiên bản mới nhất tại đây . Nếu Xcode được cài đặt, thì Git chắc chắn sẽ được cài đặt tự động.

Cài đặt Git

Git có cài đặt người dùng cho người dùng sẽ gửi công việc. Điều này hợp lý và cần thiết, vì Git lấy thông tin này cho trường Tác giả khi một cam kết được tạo. Thiết lập tên người dùng và mật khẩu cho tất cả các dự án của bạn bằng cách chạy các lệnh sau:
git config --global user.name "Ivan Ivanov"
git config --global user.email ivan.ivanov@gmail.com
Nếu bạn cần thay đổi tác giả cho một dự án cụ thể, bạn có thể xóa "--global". Điều này sẽ cung cấp cho chúng tôi những điều sau đây:
git config user.name "Ivan Ivanov"
git config user.email ivan.ivanov@gmail.com

Một chút lý thuyết ...

Để đi sâu vào chủ đề này, chúng tôi xin giới thiệu với bạn một số từ và hành động mới...
  • kho git
  • làm
  • chi nhánh
  • hợp nhất
  • xung đột
  • sự lôi kéo
  • cách bỏ qua một số tệp (.gitignore)
Và như thế.

Trạng thái trong Git

Git có một số bức tượng cần được hiểu và ghi nhớ:
  • không bị theo dõi
  • sửa đổi
  • dàn dựng
  • tận tụy

Bạn nên hiểu điều này như thế nào?

Đây là những trạng thái áp dụng cho các tệp chứa mã của chúng tôi:
  1. Một tệp được tạo nhưng chưa được thêm vào kho lưu trữ có trạng thái "không bị theo dõi".
  2. Khi chúng tôi thay đổi các tệp đã được thêm vào kho lưu trữ Git, thì trạng thái của chúng là "đã sửa đổi".
  3. Trong số các tệp mà chúng tôi đã thay đổi, chúng tôi chọn những tệp chúng tôi cần và các lớp này được thay đổi thành trạng thái "dàn dựng".
  4. Một cam kết được tạo từ các tệp đã chuẩn bị ở trạng thái theo giai đoạn và đi vào kho lưu trữ Git. Sau đó, không có tệp nào có trạng thái "dàn dựng". Nhưng vẫn có thể có các tệp có trạng thái "đã sửa đổi".
Đây là những gì nó trông giống như:Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 4

Cam kết là gì?

Cam kết là sự kiện chính khi nói đến kiểm soát phiên bản. Nó chứa tất cả các thay đổi được thực hiện kể từ khi bắt đầu cam kết. Các cam kết được liên kết với nhau giống như một danh sách được liên kết đơn lẻ. Cụ thể hơn: Có một cam kết đầu tiên. Khi lần xác nhận thứ hai được tạo, nó sẽ biết điều gì xảy ra sau lần xác nhận đầu tiên. Và theo cách này, thông tin có thể được theo dõi. Một cam kết cũng có thông tin riêng của nó, được gọi là siêu dữ liệu:
  • mã định danh duy nhất của cam kết, có thể được sử dụng để tìm thấy nó
  • tên của tác giả của cam kết, người đã tạo ra nó
  • ngày cam kết được tạo
  • một bình luận mô tả những gì đã được thực hiện trong quá trình cam kết
Đây là giao diện của nó:Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 5

Chi nhánh là gì?

Một nhánh là một con trỏ tới một số cam kết. Bởi vì một lần xác nhận biết lần xác nhận nào trước nó, khi một nhánh trỏ đến một lần xác nhận, tất cả các lần xác nhận trước đó cũng áp dụng cho nó. Theo đó, chúng tôi có thể nói rằng bạn có thể có bao nhiêu nhánh tùy ý trỏ đến cùng một cam kết. Công việc xảy ra trong các nhánh, vì vậy khi một lần xác nhận mới được tạo, nhánh sẽ di chuyển con trỏ của nó tới lần xác nhận gần đây hơn.

Bắt đầu với Git

Bạn có thể làm việc với kho lưu trữ cục bộ một mình cũng như với kho lưu trữ từ xa. Để thực hành các lệnh cần thiết, bạn có thể giới hạn bản thân trong kho lưu trữ cục bộ. Nó chỉ lưu trữ cục bộ tất cả thông tin của dự án trong thư mục .git. Nếu chúng ta đang nói về kho lưu trữ từ xa, thì tất cả thông tin được lưu trữ ở đâu đó trên máy chủ từ xa: chỉ một bản sao của dự án được lưu trữ cục bộ. Những thay đổi được thực hiện đối với bản sao cục bộ của bạn có thể được đẩy (git push) vào kho lưu trữ từ xa. Trong cuộc thảo luận của chúng ta ở đây và bên dưới, chúng ta đang nói về việc làm việc với Git trong bảng điều khiển. Tất nhiên, bạn có thể sử dụng một số loại giải pháp dựa trên GUI (ví dụ: IntelliJ IDEA), nhưng trước tiên, bạn nên tìm hiểu những lệnh nào đang được thực thi và ý nghĩa của chúng.

Làm việc với Git trong kho lưu trữ cục bộ

Tiếp theo, tôi khuyên bạn nên làm theo và thực hiện tất cả các bước mà tôi đã làm khi bạn đọc bài viết. Điều này sẽ cải thiện sự hiểu biết và nắm vững tài liệu của bạn. Vâng, bon ngon miệng! :) Để tạo một kho lưu trữ cục bộ, bạn cần viết:
git init
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 6Thao tác này sẽ tạo thư mục .git trong thư mục hiện tại của bảng điều khiển. Thư mục .git lưu trữ tất cả thông tin về kho lưu trữ Git. Đừng xóa nó;) Tiếp theo, các tệp được thêm vào dự án và chúng được gán trạng thái "Không bị theo dõi". Để kiểm tra tình trạng hiện tại của công việc của bạn, viết này:
git status
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 7Chúng tôi đang ở trong nhánh chính và chúng tôi sẽ ở đây cho đến khi chuyển sang nhánh khác. Điều này cho biết những tệp nào đã thay đổi nhưng chưa được thêm vào trạng thái "dàn dựng". Để thêm chúng vào trạng thái "dàn dựng", bạn cần viết "git add". Chúng tôi có một vài lựa chọn ở đây, ví dụ:
  • git add -A — thêm tất cả các tệp vào trạng thái "dàn dựng"
  • git thêm . — thêm tất cả các tệp từ thư mục này và tất cả các thư mục con. Về cơ bản, cái này giống cái trước
  • git add <tên tệp> — thêm một tệp cụ thể. Tại đây, bạn có thể sử dụng các biểu thức chính quy để thêm tệp theo một số mẫu. Ví dụ: git add *.java: Điều này có nghĩa là bạn chỉ muốn thêm các tệp có phần mở rộng java.
Hai tùy chọn đầu tiên rõ ràng là đơn giản. Mọi thứ trở nên thú vị hơn với phần bổ sung mới nhất, vì vậy hãy viết:
git add *.txt
Để kiểm tra trạng thái, chúng tôi sử dụng lệnh đã biết:
git status
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 8Tại đây, bạn có thể thấy rằng biểu thức chính quy đã hoạt động bình thường: test_resource.txt hiện có trạng thái "dàn dựng". Và cuối cùng, giai đoạn cuối cùng để làm việc với kho lưu trữ cục bộ (còn một bước nữa khi làm việc với kho lưu trữ từ xa ;)) — tạo một cam kết mới:
git commit -m "all txt files were added to the project"
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 9Tiếp theo là một lệnh tuyệt vời để xem lịch sử cam kết trên một nhánh. Hãy tận dụng nó:
git log
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 10Ở đây bạn có thể thấy rằng chúng tôi đã tạo cam kết đầu tiên của mình và nó bao gồm văn bản mà chúng tôi đã cung cấp trên dòng lệnh. Điều rất quan trọng là phải hiểu rằng văn bản này phải giải thích chính xác nhất có thể những gì đã được thực hiện trong quá trình cam kết này. Điều này sẽ giúp chúng tôi nhiều lần trong tương lai. Một độc giả tò mò chưa ngủ có thể thắc mắc điều gì đã xảy ra với tệp GitTest.java. Hãy cùng tìm hiểu ngay bây giờ. Để làm điều này, chúng tôi sử dụng:
git status
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 11Như bạn có thể thấy, nó vẫn "không bị theo dõi" và đang chờ đợi trong đôi cánh. Nhưng nếu chúng ta không muốn thêm nó vào dự án thì sao? Đôi khi điều đó xảy ra. Để làm cho mọi thứ thú vị hơn, bây giờ chúng ta hãy thử thay đổi tệp test_resource.txt của chúng ta. Hãy thêm một số văn bản ở đó và kiểm tra trạng thái:
git status
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 12Tại đây, bạn có thể thấy rõ sự khác biệt giữa trạng thái "không bị theo dõi" và "đã sửa đổi". GitTest.java là "không bị theo dõi", trong khi test_resource.txt là "đã sửa đổi". Bây giờ chúng tôi có các tệp ở trạng thái đã sửa đổi, chúng tôi có thể kiểm tra các thay đổi được thực hiện đối với chúng. Điều này có thể được thực hiện bằng cách sử dụng lệnh sau:
git diff
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 13Đó là, bạn có thể thấy rõ ở đây những gì tôi đã thêm vào tệp văn bản của chúng tôi: xin chào thế giới! Hãy thêm các thay đổi của chúng tôi vào tệp văn bản và tạo một cam kết:
git add test_resource.txt
git commit -m "added hello word! to test_resource.txt"
Để xem xét tất cả các cam kết, hãy viết:
git log
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 14Như bạn có thể thấy, bây giờ chúng ta có hai lần xác nhận. Chúng ta sẽ thêm GitTest.java theo cách tương tự. Không có bình luận ở đây, chỉ có lệnh:
git add GitTest.java
git commit -m "added GitTest.java"
git status
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 15

Làm việc với .gitignore

Rõ ràng, chúng tôi chỉ muốn giữ riêng mã nguồn và không có gì khác trong kho lưu trữ. Vì vậy, những gì khác có thể có? Ở mức tối thiểu, các lớp và/hoặc tệp được biên dịch do môi trường phát triển tạo ra. Để yêu cầu Git bỏ qua chúng, chúng ta cần tạo một tệp đặc biệt. Thực hiện việc này: tạo một tệp có tên .gitignore trong thư mục gốc của dự án. Mỗi dòng trong tệp này đại diện cho một mẫu để bỏ qua. Trong ví dụ này, tệp .gitignore sẽ trông như thế này:
```
*.class
target/
*.iml
.idea/
```
Hãy cùng xem:
  • Dòng đầu tiên là bỏ qua tất cả các tệp có phần mở rộng .class
  • Dòng thứ hai là bỏ qua thư mục "đích" và mọi thứ chứa trong đó
  • Dòng thứ ba là bỏ qua tất cả các tệp có phần mở rộng .iml
  • Dòng thứ tư là bỏ qua thư mục .idea
Hãy thử sử dụng một ví dụ. Để xem nó hoạt động như thế nào, hãy thêm GitTest.class đã biên dịch vào dự án và kiểm tra trạng thái dự án:
git status
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 16Rõ ràng, chúng tôi không muốn vô tình thêm lớp đã biên dịch vào dự án (sử dụng git add -A). Để làm điều này, hãy tạo một tệp .gitignore và thêm mọi thứ đã được mô tả trước đó: Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 17Bây giờ, hãy sử dụng một cam kết để thêm tệp .gitignore vào dự án:
git add .gitignore
git commit -m "added .gitignore file"
Và bây giờ là thời điểm của sự thật: chúng tôi có một lớp GitTest.class đã biên dịch là "không bị theo dõi", mà chúng tôi không muốn thêm vào kho lưu trữ Git. Bây giờ chúng ta sẽ thấy tác dụng của tệp .gitignore:
git status
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 18Hoàn hảo! .gitignore +1 :)

Làm việc với các chi nhánh và như vậy

Đương nhiên, làm việc chỉ trong một chi nhánh sẽ gây bất tiện cho các nhà phát triển đơn độc và điều đó là không thể khi có nhiều hơn một người trong nhóm. Đây là lý do tại sao chúng tôi có các chi nhánh. Như tôi đã nói trước đó, một nhánh chỉ là một con trỏ di động để xác nhận. Trong phần này, chúng ta sẽ khám phá cách làm việc trong các nhánh khác nhau: cách hợp nhất các thay đổi từ nhánh này sang nhánh khác, xung đột nào có thể phát sinh, v.v. Để xem danh sách tất cả các nhánh trong kho lưu trữ và hiểu bạn đang ở nhánh nào, bạn cần viết:
git branch -a
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 19Bạn có thể thấy rằng chúng tôi chỉ có một nhánh chính. Dấu hoa thị phía trước cho biết chúng tôi đang ở trong đó. Nhân tiện, bạn cũng có thể sử dụng lệnh "git status" để biết chúng ta đang ở nhánh nào. Sau đó, có một số tùy chọn để tạo nhánh (có thể có nhiều hơn — đây là những tùy chọn mà tôi sử dụng):
  • tạo một nhánh mới dựa trên nhánh chúng tôi đang ở (99% trường hợp)
  • tạo một nhánh dựa trên một cam kết cụ thể (1% trường hợp)

Hãy tạo một nhánh dựa trên một cam kết cụ thể

Chúng tôi sẽ dựa vào số nhận dạng duy nhất của cam kết. Để tìm thấy nó, chúng tôi viết:
git log
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 20Tôi đã đánh dấu cam kết bằng nhận xét "đã thêm xin chào thế giới..." Số nhận dạng duy nhất của nó là 6c44e53d06228f888f2f454d3cb8c1c976dd73f8. Tôi muốn tạo một nhánh "phát triển" bắt đầu từ cam kết này. Để làm điều này, tôi viết:
git checkout -b development 6c44e53d06228f888f2f454d3cb8c1c976dd73f8
Một nhánh được tạo chỉ với hai lần xác nhận đầu tiên từ nhánh chính. Để xác minh điều này, trước tiên chúng tôi đảm bảo chuyển sang một nhánh khác và xem số lần xác nhận ở đó:
git status
git log
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 21Và như mong đợi, chúng tôi có hai lần xác nhận. Nhân tiện, đây là một điểm thú vị: chưa có tệp .gitignore trong nhánh này, vì vậy tệp đã biên dịch của chúng tôi (GitTest.class) hiện được đánh dấu bằng trạng thái "không bị theo dõi". Bây giờ chúng ta có thể xem lại các nhánh của mình bằng cách viết như sau:
git branch -a
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 22Bạn có thể thấy rằng có hai nhánh: "chính" và "phát triển". Chúng tôi hiện đang trong quá trình phát triển.

Hãy tạo một nhánh dựa trên nhánh hiện tại

Cách thứ hai để tạo một nhánh là tạo nó từ một nhánh khác. Tôi muốn tạo một nhánh dựa trên nhánh chính. Đầu tiên, tôi cần chuyển sang nó, và bước tiếp theo là tạo một cái mới. Hãy cùng xem:
  • git checkout master — chuyển sang nhánh chính
  • trạng thái git - xác minh rằng chúng tôi thực sự đang ở nhánh chính
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 23Ở đây bạn có thể thấy rằng chúng tôi đã chuyển sang nhánh chính, tệp .gitignore có hiệu lực và lớp đã biên dịch không còn được đánh dấu là "không bị theo dõi". Bây giờ chúng ta tạo một nhánh mới dựa trên nhánh chính:
git checkout -b feature/update-txt-files
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 24Nếu bạn không chắc liệu nhánh này có giống với nhánh "chính" hay không, bạn có thể dễ dàng kiểm tra bằng cách thực hiện "git log" và xem xét tất cả các lần xác nhận. Nên có bốn người trong số họ.

giải quyết xung đột

Trước khi khám phá xung đột là gì, chúng ta cần nói về việc hợp nhất một nhánh với một nhánh khác. Hình này mô tả quá trình hợp nhất một nhánh với một nhánh khác: Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 25Ở đây, chúng ta có một nhánh chính. Tại một số điểm, một nhánh phụ được tạo ra từ nhánh chính và sau đó được sửa đổi. Sau khi hoàn thành công việc, chúng ta cần hợp nhất nhánh này với nhánh kia. Tôi sẽ không mô tả các tính năng khác nhau: Trong bài viết này, tôi chỉ muốn truyền đạt một sự hiểu biết chung. Nếu bạn cần chi tiết, bạn có thể tự tra cứu chúng. Trong ví dụ của chúng tôi, chúng tôi đã tạo nhánh feature/update-txt-files. Như được chỉ định bởi tên của chi nhánh, chúng tôi đang cập nhật văn bản. Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 26Bây giờ chúng ta cần tạo một commit mới cho công việc này:
git add *.txt
git commit -m "updated txt files"
git log
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 27Bây giờ, nếu chúng ta muốn hợp nhất nhánh feature/update-txt-files thành master, chúng ta cần vào master và viết "git merge feature/update-txt-files":
git checkout master
git merge feature/update-txt-files
git log
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 28Do đó, nhánh chính hiện cũng bao gồm cam kết đã được thêm vào tệp tính năng/cập nhật-txt. Chức năng này đã được thêm vào, vì vậy bạn có thể xóa một nhánh tính năng. Để làm điều này, chúng tôi viết:
git branch -D feature/update-txt-files
Mọi thứ đều rõ ràng cho đến nay, phải không? Hãy làm phức tạp tình hình: bây giờ giả sử rằng bạn cần thay đổi lại tệp txt. Nhưng bây giờ tệp này cũng sẽ được thay đổi trong nhánh chính. Nói cách khác, nó sẽ thay đổi song song. Git sẽ không thể biết phải làm gì khi chúng ta muốn hợp nhất mã mới của mình vào nhánh chính. Đi nào! Chúng tôi sẽ tạo một nhánh mới dựa trên master, thực hiện các thay đổi đối với text_resource.txt và tạo một cam kết cho công việc này:
git checkout -b feature/add-header
... we make changes to the file
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 29
git add *.txt
git commit -m "added header to txt"
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 30Chuyển đến nhánh chính và cũng cập nhật tệp văn bản này trên cùng một dòng như trong nhánh tính năng:
git checkout master
… we updated test_resource.txt
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 31
git add test_resource.txt
git commit -m "added master header to txt"
Và bây giờ là điểm thú vị nhất: chúng ta cần hợp nhất các thay đổi từ nhánh feature/add-header thành master. Chúng tôi đang ở trong nhánh chính, vì vậy chúng tôi chỉ cần viết:
git merge feature/add-header
Nhưng kết quả sẽ là xung đột trong tệp test_resource.txt: Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 32Ở đây chúng ta có thể thấy rằng Git không thể tự quyết định cách hợp nhất mã này. Nó cho chúng tôi biết rằng chúng tôi cần giải quyết xung đột trước và chỉ sau đó mới thực hiện cam kết. ĐƯỢC RỒI. Chúng tôi mở tệp có xung đột trong trình soạn thảo văn bản và xem: Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 33Để hiểu những gì Git đã làm ở đây, chúng tôi cần nhớ chúng tôi đã thực hiện những thay đổi nào và ở đâu, sau đó so sánh:
  1. Những thay đổi trên dòng này trong nhánh chính được tìm thấy giữa "<<<<<<< HEAD" và "=======".
  2. Các thay đổi trong nhánh tính năng/tiêu đề bổ sung được tìm thấy giữa "=======" và ">>>>>>> tính năng/tiêu đề bổ sung".
Đây là cách Git cho chúng ta biết rằng nó không thể tìm ra cách thực hiện hợp nhất tại vị trí này trong tệp. Nó chia phần này thành hai phần từ các nhánh khác nhau và mời chúng tôi tự giải quyết xung đột hợp nhất. Đủ công bằng. Tôi mạnh dạn quyết định xóa mọi thứ, chỉ để lại từ "tiêu đề": Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 34Hãy xem trạng thái của các thay đổi. Mô tả sẽ hơi khác một chút. Thay vì trạng thái "đã sửa đổi", chúng tôi đã "không hợp nhất". Vì vậy, chúng ta có thể đã đề cập đến một trạng thái thứ năm? Tôi không nghĩ rằng điều này là cần thiết. Hãy xem nào:
git status
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 35Chúng ta có thể thuyết phục bản thân rằng đây là một trường hợp đặc biệt, bất thường. Tiếp tục đi:
git add *.txt
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 36Bạn có thể nhận thấy rằng phần mô tả chỉ đề xuất viết "git commit". Hãy thử viết rằng:
git commit
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 37Và cứ như vậy, chúng tôi đã làm được — chúng tôi đã giải quyết xung đột trong bảng điều khiển. Tất nhiên, điều này có thể được thực hiện dễ dàng hơn một chút trong môi trường phát triển tích hợp. Ví dụ: trong IntelliJ IDEA, mọi thứ được thiết lập tốt đến mức bạn có thể thực hiện tất cả các hành động cần thiết ngay trong đó. Nhưng các IDE làm rất nhiều thứ "dưới mui xe" và chúng ta thường không hiểu chính xác điều gì đang xảy ra ở đó. Và khi không có sự hiểu biết, vấn đề có thể nảy sinh.

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

Bước cuối cùng là tìm ra thêm một số lệnh cần thiết để làm việc với kho lưu trữ từ xa. Như tôi đã nói, kho lưu trữ từ xa là một nơi mà kho lưu trữ được lưu trữ và từ đó bạn có thể sao chép nó. Có những loại kho lưu trữ từ xa nào? Ví dụ:
  • GitHub là nền tảng lưu trữ lớn nhất cho các kho lưu trữ và phát triển hợp tác. Tôi đã mô tả nó trong các bài viết trước.
    Theo dõi tôi trên GitHub . Tôi thường khoe công việc của mình ở đó trong những lĩnh vực mà tôi đang học để làm việc.

  • GitLab là một công cụ dựa trên web dành cho vòng đời DevOps với mã nguồn mở . Nó là một hệ thống dựa trên Git để quản lý kho lưu trữ mã với wiki riêng, hệ thống theo dõi lỗi , đường dẫn CI/CD và các chức năng khác.
    Sau thông tin Microsoft mua GitHub, một số nhà phát triển đã sao chép dự án của họ trong GitLab.

  • BitBucket là một dịch vụ web để lưu trữ dự án và phát triển cộng tác dựa trên hệ thống kiểm soát phiên bản Mercurial và Git. Đã có lúc nó có lợi thế lớn so với GitHub ở chỗ nó cung cấp các kho lưu trữ riêng miễn phí. Năm ngoái, GitHub cũng đã giới thiệu miễn phí khả năng này cho mọi người.

  • Và như thế…

Khi làm việc với kho lưu trữ từ xa, điều đầu tiên cần làm là sao chép dự án vào kho lưu trữ cục bộ của bạn. Đối với điều này, tôi đã xuất dự án mà chúng tôi đã thực hiện tại địa phương và bây giờ mọi người có thể tự sao chép dự án đó bằng cách viết:
git clone https://github.com/romankh3/git-demo
Hiện tại đã có một bản sao cục bộ hoàn chỉnh của dự án. Để đảm bảo rằng bản sao cục bộ của dự án là mới nhất, bạn cần kéo dự án bằng cách viết:
git pull
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 38Trong trường hợp của chúng tôi, hiện tại không có gì trong kho lưu trữ từ xa thay đổi, vì vậy phản hồi là: Đã cập nhật. Nhưng nếu tôi thực hiện bất kỳ thay đổi nào đối với kho lưu trữ từ xa, kho lưu trữ cục bộ sẽ được cập nhật sau khi chúng tôi kéo chúng. Và cuối cùng, lệnh cuối cùng là đẩy dữ liệu đến kho lưu trữ từ xa. Khi chúng tôi đã thực hiện một cái gì đó cục bộ và muốn gửi nó đến kho lưu trữ từ xa, trước tiên chúng tôi phải tạo một cam kết mới cục bộ. Để chứng minh điều này, hãy thêm một thứ khác vào tệp văn bản của chúng ta: Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 39Bây giờ một thứ khá phổ biến đối với chúng ta — chúng ta tạo một cam kết cho công việc này:
git add test_resource.txt
git commit -m "prepared txt for pushing"
Lệnh để đẩy cái này vào kho lưu trữ từ xa là:
git push
Bắt đầu với Git: hướng dẫn toàn diện cho người mới - 40Vâng, đó là tất cả những gì tôi muốn nói. Cảm ơn đã quan tâm. Theo dõi tôi trên GitHub , nơi tôi đăng nhiều dự án ví dụ thú vị liên quan đến công việc và nghiên cứu cá nhân của mình.

liên kết hữu ích

  • Tài liệu Git chính thức . Tôi đề nghị nó như một tài liệu tham khảo.
Bình luận
  • Phổ biến
  • Mới
Bạn phải đăng nhập để đăng nhận xet
Trang này chưa có bất kỳ bình luận nào