Giải quyết xung đột

Trước hết hãy thực hiện pull, rồi lấy lịch sử thay đổi mới nhất từ remote repository.

Giải quyết xung đột

Windows

Thao tác trên tutorial.

Để thực hiện pull, hãy click chuột phải vào thư mục tutorial, từ menu hiện ra nhấn vào [pull].

Thao tác trên tutorial.

Vì màn hình tiếp theo sẽ được hiển thị nên hãy nhấn nút "OK".

Thao tác trên tutorial.

Thông báo merge tự động đã thất bại sẽ được hiển thị. Hãy nhấn nút "close" rồi đóng màn hình.

Thao tác trên tutorial.

Vì sẽ được hỏi là có xác nhận thay đổi hay không nên hãy nhấn nút "Yes".

Thao tác trên tutorial.

TortoiseGit sẽ cho biết việc merge tự động đã thất bại do phát sinh xung đột ở sample.txt. Hãy nhấn nút "OK" để đóng màn hình.

Thao tác trên tutorial.

Thử mở file sample.txt và kiểm tra. Git sẽ chỉnh sửa như dưới đây ở nơi đã phát sinh xung đột (phần tô đậm).

Đến cả con khỉ cũng hiểu được lệnh Git
add: Đăng ký thay đổi trong index
<<<<<<< HEAD
commit: Lưu lại trạng thái của index
=======
pull: Lấy nội dung của remote repository
>>>>>>> 17c860612953c0f9d88f313c8dfbf7d858e02e91

Ở đây, sẽ áp dụng thay đổi cả 2 bên, xóa dòng đánh dấu dư thừa.

Đến cả con khỉ cũng hiểu được lệnh Git
add: Đăng ký thay đổi trong index
commit: Lưu lại trạng thái của index

pull: Lấy nội dung của remote repository Thao tác trên tutorial. Vì đã thay đổi nội dung file nên cần phải commit. Từ menu hiển thị khi nhấn chuột phải, chọn [commit] để thực hiện commit.

Như thế là đã hoàn thành việc lấy nội dung thay đổi mới nhất từ remote repository.

Từ hiển thị này, sẽ hiểu được việc đã tích hợp 2 thay đổi.

Như thế, push đã bị từ chối ở trang trước đã có thể thực hiện được. Hãy thử push và kiểm tra xem.

Mac

Thao tác trên tutorial.

Nhấn nút "pull" trên thanh công cụ rồi thực hiện pull.

Thao tác trên tutorial.

Vì màn hình tiếp theo sẽ được hiển thị nên cứ giữ nguyên như vậy và nhấn nút "OK".

Thao tác trên tutorial.

Hộp thoại thông báo việc phát sinh xung đột trong khi merge đã được hiển thị.

Thao tác trên tutorial.

Thử mở file sample.txt và kiểm tra. Git sẽ chỉnh sửa như dưới đây ở nơi đã phát sinh xung đột (phần tô đậm).

Đến cả con khỉ cũng hiểu được lệnh Git
add: Đăng ký thay đổi trong index
<<<<<<< HEAD
commit: Lưu lại trạng thái của index
=======
pull: Lấy nội dung của remote repository
>>>>>>> 17c860612953c0f9d88f313c8dfbf7d858e02e91

Ở đây, sẽ áp dụng thay đổi cả 2 bên, xóa dòng đánh dấu dư thừa.

Đến cả con khỉ cũng hiểu được lệnh Git
add: Đăng ký thay đổi trong index
commit: Lưu lại trạng thái của index
pull: Lấy nội dung của remote repository

Thao tác trên tutorial.

Vì đã thay đổi nội dung file nên cần phải commit. Sau khi thêm file vào index, hãy nhấn nút "commit" rồi thực hiện commit.

Như thế là đã hoàn thành việc lấy nội dung thay đổi mới nhất từ remote repository.

Từ hiển thị này, sẽ hiểu được việc đã tích hợp 2 thay đổi.

Như thế, push đã bị từ chối ở trang trước đã có thể thực hiện được. Hãy thử push và kiểm tra xem.

Console

Thao tác trên tutorial.

Hãy thực hiện lệnh sau đây.

$ git pull origin master
Username: <Tên người dùng>
Password: <Mật khẩu>
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://monkey.backlogtool.com/git/BLGGIT/tutorial.git
 * branch            master     -> FETCH_HEAD
Auto-merging sample.txt
CONFLICT (content): Merge conflict in sample.txt
Automatic merge failed; fix conflicts and then commit the result.
Thông báo về việc phát sinh xung đột trong khi merge đã được hiển thị.

Thao tác trên tutorial.

Vì nội dung [Merge conflict in sample.txt] sẽ được hiển thị nên hãy mở file sample.txt và thử kiểm tra. Git sẽ thay đổi phần không thể merge tự động như dưới đây (phần tô đậm).

Đến cả con khỉ cũng hiểu được lệnh Git
add: Đăng ký thay đổi trong index
<<<<<<< HEAD
commit: Lưu lại trạng thái của index
=======
pull: Lấy nội dung của remote repository
>>>>>>> 17c860612953c0f9d88f313c8dfbf7d858e02e91

Thao tác trên tutorial.

Ở đây, sẽ áp dụng thay đổi cả 2 bên, xóa dòng đánh dấu dư thừa.

Lệnh Git mà ngay cả khỉ cũng hiểu được
add: Đăng ký thay đổi trong index
commit: Lưu lại trạng thái của index
pull: Lấy nội dung của remote repository

Thao tác trên tutorial.

Khi sửa xong nội dung file thì cần phải commit nên sẽ thực hiện commit.

$ git add sample.txt
$ git commit -m "merge"
[master d845b81] merge
Như thế là đã hoàn thành việc lấy nội dung thay đổi mới nhất từ remote repository.

Thao tác trên tutorial.

Hãy thử kiểm tra lịch sử bằng lệnh log. Khi chỉ định lựa chọn --graph thì có thể hiển thị luồng lịch sử bằng text. Khi chỉ định lựa chọn --oneline sẽ hiển thị thông tin commit bằng một dòng.

$ git log --graph --oneline
*   d845b81 merge
|\
| * 4c01823 Thêm giải thích pull
* | 95f15c9 Thêm giải thích commit
|/
* 3da09c1 Thêm giải thích add
* ac56e47 first commit

Bình luận