Giải quyết xung đột
Để tiến hành đẩy thay đổi chúng ta vừa tạo đến kho lưu trữ từ xa, chúng ta phải giải quyết xung đột theo cách thủ công. Để làm điều này, hãy thực hiện thao tác kéo để lấy tập thay đổi gần đây nhất từ kho lưu trữ từ xa.
Thực hiện lệnh git pull sau:
$ git pull origin main
Username:
Password:
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://example.backlog.com/git/BLGGIT/tutorial.git
* branch main -> FETCH_HEAD
Auto-merging sample.txt
CONFLICT (content): Merge conflict in sample.txt
Automatic merge failed; fix conflicts and then commit the result.
Một tin nhắn sẽ xuất hiện cảnh báo chúng ta về xung đột hợp nhất.
Khi mở sample.txt
, bạn sẽ thấy các điểm đánh dấu do Git thêm vào cho biết các xung đột trong phần tệp đó, như minh họa bên dưới.
Anyone can learn Git with this tutorial and Backlog
add: Register a change in an index
<<<<<<< HEAD
commit: Save the status of an index
=======
pull: Obtain the content of the remote repository
>>>>>>> 17c860612953c0f9d88f313c8dfbf7d858e02e91
Chúng ta sẽ giải quyết xung đột bằng cách chấp nhận cả hai thay đổi và xóa điểm đánh dấu.
Anyone can learn Git with this tutorial and Backlog
add: Register a change in an index
commit: Save the status of an index
pull: Obtain the content of the remote repository
Khi chúng ta đã giải quyết xung đột và nội dung của tệp đã thay đổi, chúng ta cam kết thay đổi.
$ git add sample.txt
$ git commit -m "merge"
[main d845b81] merge
Hiện chúng tôi đã cập nhật thay đổi mới nhất từ kho lưu trữ từ xa.
Chúng tôi có thể xác minh tính chính xác của lịch sử kho lưu trữ bằng cách sử dụng lệnh git log. Tùy chọn --graph
sẽ hiển thị lịch sử nhánh ở định dạng biểu đồ và tùy chọn --online
sẽ cố gắng thu gọn tin nhắn đầu ra
$ git log --graph --oneline
* d845b81 merge
|\
| * 4c01823 append description of the pull command
* | 95f15c9 append description of the commit command
|/
* 3da09c1 append description of the add command
* ac56e47 first commit
Điều này chỉ ra rằng hai lịch sử đã được hợp nhất thành công với cam kết hợp nhất mới. Bây giờ chúng ta có thể đẩy thay đổi này vào kho lưu trữ từ xa một cách an toàn mà không có bất kỳ xung đột hợp nhất nào.