|
||||||||
|
||||||||
|
|
Công Cụ | Xếp Bài |
10-09-2015, 11:14 AM | #1 |
Guest
Trả Lời: n/a
|
8. [Git] Branch – Kỹ thuật phân nhánh (Branch)
8. [Git] Branch – Kỹ thuật phân nhánh (Branch)
Trong khi làm việc với Git, bạn đã quá quen thuộc với việc chỉnh sửa mã nguồn, sau đó là commit mỗi khi chỉnh sửa xong và push lên remote repository nếu cần thiết. Nhưng bây giờ mình có một ví dụ đặt ra là mình muốn tạo một phiên bản thử nghiệm với mã nguồn đang làm việc trong working tree hiện tại mà không gây ảnh hưởng đến các code hiện tại. Vậy thì làm cách nào? Không lẽ clone một repository từ chính cái working tree hiện tại rồi sửa đổi hay sao? Như thế rất là mất công, mà lại không tối ưu và không thể đồng bộ hóa hoặc rất khó khăn để đồng bộ hóa. Mà trong Git, chúng ta sẽ sử dụng một giải pháp khác tuyệt vời hơn, dễ dàng hơn gọi là phân nhánh (branching), mà cụ thể là phân nhánh cái gì? Đó là phân nhánh trong working tree hiện tại bạn đang làm việc đấy, và mỗi nhánh chúng ta sẽ gọi nó là một branch. Branch trong Git là gì? Khi bắt đầu khởi tạo một repository hoặc clone một repository, bạn sẽ có một nhánh (branch) chính tên là master (bạn có thể hiểu master là một cái thân cây). Đây là branch mà sẽ chứa toàn bộ các mã nguồn chính trong repository. Đó là lý do tại sao, ở các phần trước khi chúng ta push hoặc pull hay làm một số việc khác thì lại có tham số master trong câu lệnh, đó nghĩa là chúng ta đang thực hiện thao tác trên branch master. Nhánh Master là nhánh chính mặc định trong working tree. Bạn có thể tạo ra một (hoặc nhiều nhánh mới) với tên là Develop chẳng hạn. Bây giờ nếu bạn muốn tạo một sự thay đổi nào đó mà có thể trực tiếp sử dụng trên working tree hoặc commit, push lên repository mà không ảnh hưởng đến branch master thì sẽ cần tạo ra một branch mới với tên là develop chẳng hạn. Và từ đó mỗi khi bạn thực hiện lệnh checkout vào branch nào đó thì toàn bộ mã nguồn trên working tree của bạn sẽ được đổi sang môi trường dành cho branch đang checkout. Giờ mình lấy một ví dụ đơn giản, bên branch master bạn tạo một tập tin master.html rồi commit lên, lúc này khi bạn qua cái branch develop (đã được tạo trước đó) thì cái tập tin master.html kia sẽ không có vì nó đã được commit bởi branchmaster, không liên quan gì tớidevelop. Tương tự, các thay đổi của bạn bên develop cũng sẽ không ảnh hưởng gì tới bên master cả. Điều này có một cái thú vị là nó tương tác trực tiếp trên máy tính của bạn, ví dụ tập tin index.html của master có nội dung khác và index.html bên develop thì khi bạn dùng lệnh checkout là nội dung trên máy tính nó tự đổi tương ứng, đó là lý do bạn có thể test nhiều phiên bản trên máy tính mà không cần đổi thư mục, chỉ cần checkout cái branch. Giải thích thì hơi dài dòng, cứ vào làm ví dụ cụ thể cho dễ hiểu nhé. Readmore : http://thachpham.com/tools/git-branch-ky-thuat-phan-nhanh.html |
|
|