Bài 10. Xử lý conflict
Giới thiệu
Trong bài viết này chúng ta sẽ xoay quanh một khía cạnh khác của merge code trong git, đó là resolve conflict. Trong dự án, các thành viên cùng nhau đưa mã nguồn của những tính năng hoặc mã nguồn sửa lỗi tới nhánh làm việc chung, dẫn tới có thể tạo nên xung đột trong mã nguồn(cùng tạo tệp tin, nội dung trong cùng tệp tin khác nhau, tệp tin được tạo và bị xóa bởi các thành viên khác nhau). Khi có conflict trong merge code xảy ra, hãy bình tĩnh, bạn là người giỏi trong giải quyết xung đột, bạn sẽ resolve conflict trong merge code.
Chuẩn bị
- Đã hoàn thành bài trước.
Terminalkết nốiSSHtới máyUbuntu.- Đã có
RepositorytrênUbuntu(Bài viết sử dụngFirstProjectGit).
Nội dung
Trước khi thực hiện các bước, bạn cần kéo commit từ nhánh staging trên repo về local
git checkout -b staging
git pull origin staging
Chúng ta sẽ tạo thêm nhánh dev từ nhánh staging, kịch bản là:
- Thay đổi mã nguồn trên cả 2 nhánh trong cùng một tệp tin
- Thực hiện
merge codetừ nhánh dev tới nhánh staging - Giải quyết
conflicttrên nhánh dev
1. Tạo nhánh dev từ nhánh staging
git checkout staging
git branch dev
git branch
2. Tạo thay đổi trên nhánh staging
Chuyển sang nhánh staging:
git checkout staging
Tạo ra tệp tin hello.txt và tệp tin lab_6.txt
touch hello.txt
touch lab_6.txt
Ghi nội dung cho tệp tin hello.txt (sử dụng vim hoặc nano)
print("Hello python")
console.log("Hello Javascript")
echo "Hello bash"
Sau đó tạo commit cho sự thay đổi này:
git add .
git commit -am "hello in python, js, bash"
4. Tạo thay đổi trên nhánh dev
Chuyển sang nhánh dev:
git checkout dev
Tạo ra tệp tin hello.txt và tệp tin lab_7.txt
touch hello.txt
touch lab_7.txt
ghi nội dung cho tệp tin hello.txt (sử dụng vim hoặc nano)
print("Hello python")
System.out.println("Hello Java");
fmt.Println("Hello Golang")
Sau đó tạo commit cho sự thay đổi này:
git add .
git commit -am "hello in python, java, golang"
5. Thực hiện merge code từ staging vào dev
Chúng ta cần ở không gian làm việc của nhánh dev, sau đó merge code từ nhánh staging về nhánh dev.
git checkout dev
git merge staging
Oh no, conflict đã xảy ra tại tệp tin hello.txt. Chỉ có tệp tin lab_6.txt và lab_7.txt đã được git thực merge tự động thành công.
6. Giải quyết conflict
Mở tệp tin hello.txt, bạn sẽ thấy xung đột được git biểu thị dựa trên 2 nhánh HEAD(nhánh hiện tại) và nhánh staging.
Để resolve conflict này, bạn cần hiểu nội dung của cả 2 phần, ở trong bài viết chúng ta sẽ chọn những dòng code cần (“hello java”, “hello golang”, và “hello bash”) còn lại những dòng code trong phần conflict chúng ta xóa.
Chúng ta cần tạo ra commit mới sau khi đã resolve
git status
git add .
git commit -am "merge code from staging and resolve conflict"
7. Merge code từ dev sang staging
Ở bước này, bạn hãy nghĩ cách để merge code từ nhành dev sang staging, liệu conflict có xảy ra hay không?
Tác giả: Đỗ Thiên Giang
Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.
Tags:
Bài viết liên quan
Hiểu về AI, LLM, RAG và Agentic RAG trong 15 phút
Trong vài năm gần đây, trí tuệ nhân tạo (AI) đã bùng nổ mạnh mẽ và trở thành tâm điểm của cả thế giới công nghệ. Nhưng đi kèm với nó là hàng loạt khái niệm mới như LLM, RAG, hay Agentic RAG khiến nhiều người mới bắt đầu cảm thấy lúng túng.
Đọc thêm
Hướng dẫn tự triển khai N8N trên CentOS bằng Docker Compose và NGINX
N8N là công cụ mã nguồn mở cho phép bạn tự động hóa quy trình làm việc (workflow automation) và tích hợp nhiều dịch vụ khác nhau mà không cần phải lập trình.
Đọc thêm
Hướng dẫn phân tích độ phức tạp thuật toán chi tiết
Độ phức tạp của giải thuật là một cách để đánh giá hiệu quả của một giải thuật dựa trên hai yếu tố chính là độ phức tạp thời gian và độ phức tạp không gian.
Đọc thêm
Bài 6. Các thao tác với XPath và Selector trong Selenium
Bài viết này hướng dẫn bạn làm việc XPath và Css Selector trong Selenium.
Đọc thêm
Bài 5. Các thao tác với Web Browser trong Selenium
Bài viết này hướng dẫn bạn làm việc sâu Web Browser trong Selenium.
Đọc thêm
Bài 4. Thực thi Javascript trong Selenium
Bài viết này hướng dẫn bạn thực thi lệnh Javascript trong Selenium.
Đọc thêm
Bài 3. Làm việc với Element trong Selenium
Bài viết này hướng dẫn bạn làm việc với Element trong Selenium.
Đọc thêm
Bài 2. Các thao tác cơ bản về Selenium
Bài viết này hướng dẫn bạn tạo dự án Selenium C# và thực hiện thao tác cơ bản.
Đọc thêm
Bài 1. Giới thiệu về Selenium
Bài viết giới thiệu sơ lược về chuỗi bài Selenium.
Đọc thêm
Bài 18. Xây dựng Docker Compose .NET Core Và SQL Server
Hướng dẫn xây dựng Docker Compose .NET Core Và SQL Server
Đọc thêm