TỔNG QUAN
LÀM VIỆC BRANCH
TÌM HIỂU COMMIT
LÀM VIỆC VỚI REMOTE
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Git - Lệnh merge branch - Xử lý conflict

Merge branch tức là bạn gộp hai branch lại với nhau, thao tác này thường dùng để merge branch khác vào branch master trước khi push lên remote repository, hoặc merge hai branch thành một để giải quyết chung một task.

1. Git merge branch

Để merge một branch bất kì vào branch hiện tại thì bạn sử dụng cú pháp sau:

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

$ git merge <branch_name>

Giả sử bạn đang ở branch master, bây giờ bạn muốn merge branch task1 vào branch master thì làm như sau.

$ git merge task1

Giả sử bạn đang ở branch task1, bạn muốn merge branch task2 vào branch master thì làm như sau.

$ git checkout master
$ git merge task2

2. Thực hành merge branch

Bạn hãy tạo một file tên là task1.txt tại branch task1 với nội dung như sau:

Welcome to freetuts.net, this is task1

Tiêp theo bạn quay lại branch master bằng lệnh checkout.

$ git checkout master

Lúc này bạn thấy file task1.txt biên mất, bạn hãy chạy lệnh merge như sau.

$ git merge task1

Lập tức bạn sẽ thấy fie task1.txt đã xuất hiện, lý do là tất cả dữ liệu thay đổi ở branch task1 đã được trộn chung vào branch master.

3. Xử lý xung đột (conflict) khi merge

Giả sử bạn làm hai task trên cả hai branch task 1 và task2 và cả hai đều cùng sửa một file, lúc này khi merge task1 vào task2 sẽ bị xung đột (conflict), vì vậy bạn sẽ phải thực hiện sửa xung đột đó thì thao tác merge mới hoàn thành 100%.

Bước 1: Tại branch master bạn hãy tạo một file demo.txt, sau đó tạo thêm 2 branch branch1branch2.

Tạo 2 branch
$ git branch branch1
$ git branch branch2

Bước 2: Chuyển sang làm việc tại branch1, sửa nội dung file demo.txt thành "Xin chào, đây là demo branch1" và thực hiện commit.

$ git checkout branch1
$ git add .
$ git commit -m "Commit file demo branch1"

Bước 3: Chuyển sang làm việc tại branch2, sửa nội dung file demo.txt thành "Xin chào, đây là demo branch2" và thực hiện commit.

$ git checkout branch2
$ git add .
$ git commit -m "Commit file demo branch2"

Như vậy cả 2 branch trên ta đều sửa chung một file demo. Bây giờ ta sẽ merge branch1 vào branch2 nhé.

$ git merge branch1
Auto-merging demo.txt
CONFLICT (content): Merge conflict in demo.txt
Automatic merge failed; fix conflicts and then commit the result.

Như vậy nó đã báo là bị xung đột file demo.txt, tức là conflict file demo.txt

Bây giờ ban mở file demo.txt lên thì sẽ thấy nội dung của nó như sau:

Nội dung file demo.txt
<<<<<<< HEAD
Xin chào, đây là demo branch2
=======
Xin chào, đây là demo branch1
>>>>>>> branch1

Đoạn bị xung đột được bắt đầu bằng <<<<<<< HEAD và kết thúc tại >>>>>>> branch1, được ngăn cách bởi đường =======. Trong đó đoạn trên là của branch hiện tại (branch2) và đoạn dưới là của branch cần merge (branch1).

Nhiệm vụ bây giờ của bạn là xem xét nội dung bị conflict đó xem cần sửa chỗ nào, lấy đoạn nào, sau đó xóa đi những ký hiệu trên. Giả sử mình muốn lấy cả 2 thì lúc này mình sẽ sửa file demo.txt thành:

Sửa file demo.txt
Xin chào, đây là demo branch2

Xin chào, đây là demo branch1

Ok, bây giờ ta cần commit để hoàn thành thao tác merge.

$ git add .
$ git commit -m "Xu ly conflict"

Như vậy là ta đã xử lý confick thành công. Xem hình để hiểu rõ hơn.

xu ly conflick png

4. Lời kết

Như vậy là mình đã hướng dẫn các bạn xong cách merge 2 branch lại với nhau, đồng thời mình cũng hướng dẫn cách xử lý khi bị xung đột code. Khi đi làm thực tế nếu dự án có nhiều người làm thì bạn sẽ thực hiện thao tác này rất nhiều vì các thành viên trong nhóm có thể sửa một file, lúc này bạn cần phải xem kỹ code để tránh xử lý conflict không phù hợp.

Cùng chuyên mục:

Push data lên Github

Push data lên Github

Mình sẽ không viết cách clone source từ github về mà sẽ trình bày cách…

Git - Lưu thông tin đăng nhập với credential store

Git - Lưu thông tin đăng nhập với credential store

Khi bạn thực hiện bất kì thao tác nào liên quan đến remote thì bắt…

Tạo remote repository trên Github

Tạo remote repository trên Github

Như trong bài giới thiệu series thì trong bài này chúng ta sẽ bắt đầu…

Git - Push data lên remote Repository

Git - Push data lên remote Repository

Nếu bạn là leader và bạn khởi động cho dự án thì công việc đầu…

Git - Đổi tên remote repository

Git - Đổi tên remote repository

Nếu bạn đã lỡ đặt tên cho remote không đúng thì có thể sử dụng…

Git - Xóa remote repository

Git - Xóa remote repository

Trường hợp bạn đã thêm một remote repo nhưng sau đó bạn nhận thấy đã…

Git - Thêm remote Repository

Git - Thêm remote Repository

Để làm việc với remote thì ban phải có server và cài đặt git remote…

Git - Xóa local branch

Git - Xóa local branch

Thông thường mỗi một nhiệm vụ chúng ta sẽ làm việc trên một branch khác…

Git - Phân nhánh với Rebase

Git - Phân nhánh với Rebase

Trong Git, có hai cách để trộn hai nhánh với nhau đó là sử dụng…

Git - Stash trở về trạng thái ban đầu

Git - Stash trở về trạng thái ban đầu

Trong bài này mình sẽ nói về lệnh $ git stash, đây là lệnh dùng…

Git - Amend, thay đổi commit cuối cùng

Git - Amend, thay đổi commit cuối cùng

Trong một số trường hợp bạn commit nhưng bị quên add một số file nào…

Git - Mô hình dữ liệu kho chứa

Git - Mô hình dữ liệu kho chứa

Ở các chương trước mình đã giới thiệu một số lệnh làm việc với branch…

Git -  Ba trạng thái Committed  Staged Modified

Git - Ba trạng thái Committed Staged Modified

Trong bài này chúng ta cùng thảo luận đến ba trạng thái của Git, đây…

Git - Commit căn bản

Git - Commit căn bản

Trước khi chuyển đổi sang branch khác thì bạn nên lưu lại tất cả những…

Git - Lệnh checkout branch

Git - Lệnh checkout branch

Nếu chúng ta làm việc trên nhiều branch thì phải thực hiện thao tác chuyển…

Git - Lệnh tạo Branch

Git - Lệnh tạo Branch

Như mình đã trình bày ở bài trước khi làm việc nhóm thì leader sẽ…

Git - Branch là gì? Branch master

Git - Branch là gì? Branch master

Khi làm việc với Git bắt buộc chúng ta phải thông qua branch, nhưng chúng…

Git - Tạo Repository

Git - Tạo Repository

Trong bài này mình sẽ hướng dẫn các bạn khái niệm Repository là gì và…

Git - thao tác thư mục

Git - thao tác thư mục

Để sử dụng Git nhuần nhuyễn thì đòi hỏi bạn phải có kỹ năng thao…

Git - Cấu hình username và email

Git - Cấu hình username và email

Trước khi sử dụng Git thì bạn cần phải cấu hình hai thông số đó…

Top