Git là một trong những Hệ thống Quản lý Phiên bản Phân tán, vốn được phát triển nhằm quản lý mã nguồn (source code) của Linux. Trên Git, ta có thể lưu trạng thái của file dưới dạng lịch sử cập nhật. Vì thế, có thể đưa file đã chỉnh sửa một lần về trạng thái cũ hay có thể biết được file đã được chỉnh sửa chỗ nào.
Giới thiệu GIT So sánh khác GIT SVN (subversion) – Centralize (SVN): server lưu trữ thông tin – Distribute (GIT): Cơ chế P2P Các trạng thái làm việc với GIT – Working directory – Git Index/ Staging Storage: sau thực câu lệnh git add, git rm…, code lưu staging storage – Repository: sau thực câu lệnh git commit, code lưu repository Cách GIT lưu trữ Trong project làm việc với GIT, có folder git: “.git” thư mục gốc repository Basic work: hầu hết thực local, không cần internet Login to GIT Chọn project bên tay phải (Có dạng groupname/repositoryname) Ví dụ group name Telema repository name Android Màn hình quản lý nội dung repository ra, muốn clone máy chép đường dẫn project thêm đuôi git vào, https://10.88.17.102/telema/android.git Git dùng HTTPS để giao tiếp thay SSH Ta dùng command line để sử dụng GIT trực quan ta dùng tool Atlassian SourceTree cho phép thao tác với GIT, available cho Windows Mac Sau cài đặt xong SourceTree, chọn Clone/New nhập số thông tin Source Path (Remote repository) – repository mà ta thấy GIT web tool: https://10.88.17.102/telema/android.git Destination Path (Local repository) – repository mà ta làm việc máy Login account vào, tùy loại account mà có quyền hạn khác (Administrator, Master, Developer, Reporter…) Chọn remember password để lưu lại cho lần sau (Vì lần thực thao tác với remote repository phải sử dụng account, ví dụ pull, push…) Muốn đổi lại account lưu vào Tools > Options > Authentication Việc sử dụng account để thao tác với GIT khung Default User Names Ví dụ khung Saved Passwords lưu account: - luongtest1: account account với quyền developer, có quyền push code lên branch open, tạo request yêu cầu merge code từ branch vào master - luongtest: account account với quyền master, có quyền push code lên branch đánh dấu protected), có quyền accept request merge code từ luongtest1, … Sau clone, mặc định việc clone lấy liệu từ branch master (là branch mặc định, main branch repository), khung “Branches” liệt kê branch mà ta có máy local master, khung “Remotes” (được ký hiệu từ origin – tên remote repository đặt mặc định lúc clone – tốt để tên không nên thay đổi) liệt kê branch có server, lưu ý thực server lúc có branch master, HEAD tự động để hiển thị revision mà Ngoài ta nên để ý branch mà ta làm việc, khung bên trái cho biết điều đó, trường hợp HotFix Giả sử ta thay đổi file branch master (file nằm diện tracked, untracked – cấu hình file git ignore), SourceTree phát thay đổi dòng Uncommited changes, ta cần phải check cho file Staged files commit (Khái niệm commit không giống bên SVN commit trực tiếp lên remote repository, mà đơn giản commit vào local repository máy, GIT có local repository SVN không) vào local repository Khung liệt kê file bị thay đổi chi tiết nội dung thay đổi bên file Ở tab File status ta điền vào mục message ghi nội dung commit, sau commit file commit vào local repository Có mục chọn Push change immediately… mục thực thao tác, “commit” file changes vào local repository trên, sau thực “push” file lên remote repository server Nếu ta không chọn mục Push change immediately… sau commit vào local repository, ta phải push lên remote repository để đó, tiếp tục change file, commit local… Đến lúc push lên remote Chọn local branch push remote branch push Mỗi lần commit, GIT quản lý thay đổi theo mã băm SHA-1 revision số SVN, để phân biệt lượt commit lượt commit sau lần commit khác có thuộc tính “parents” Phần label nêu rõ lượt commit available branch nào, ví dụ HEAD nghĩa lượt commit nhất, origin/master có branch master remote repository, master có branch master local repository Quay trở lại GIT web tool, bấm vào tab Commits, ta thấy lượt commit remote repository (Nếu commit local repository thấy đây) Nếu muốn tạo branch (thường tạo branch ta bắt đầu implement function mới, fix bug, … Để sau merge lại vào master để tạo hoàn chỉnh), vào tab Branches tab Commits Đặt tên branch, định tạo từ “Base” nào, ví dụ tạo từ base master branch tạo ra, có content giống content master Xem nội dung commit cách chọn branch tương ứng Giống SVN, GIT cho phép tạo tags để đánh dấu mốc đáng ý Hoặc tạo tags tool, sau phải push tag lên remote repository có remote – GIT web tool (do lúc có local) Trên web tool, để compare branch với nhau, mặc định chế độ view Inline Diff Hoặc chọn cách tạo bên SVN tách bấm tab Side-by-side Diff Khi branch có khác nhau, GIT web tool cung cấp mục Make a merge request để tạo request nhằm merge code từ branch lại thống với Điền mục tương ứng, Phần “From…” into để code từ branch merge vào branch nào, đay HotFix merge vào master Hãy nhớ định người có thẩm quyền để merge (thường user với permission master) Khi request tạo ra, vào để discuss việc merge có ổn hay không Có thể comment đoạn code merge bất kỳ, để người khác theo dõi sửa đổi, rút kinh nghiệm Người assign việc merge có nút Accept merge request (Nếu không xảy Conflict – Đối với GIT conflict xảy branch edit line of code file SVN, branch không edit line nên không conflict, GIT cho nút Accept trên) Và sau accept Sau merge code xong, ta remove branch Hot fix set permission cho protected, developer push code lên branch nữa, dạng readonly – chỉnh Project Settings > Protected branches Sau merge code vào master remote (tên đầy đủ origin/master SourceTree tool) chắn lúc master local bị lỗi thời ta chưa pull Lúc ta thấy Commit Graph minh họa thay đổi, đường HotFix tách từ master, thực hot fix, sau merge vào master lại Để xem trực quan hơn, ta nên xem commit graph web tool, nên để branch master (lấy master làm trung tâm) Khi branch edit line of code, conflict xảy ra, lúc merge request sau Ta phải làm tay cách pull code từ remote local, sau merge tay text file Những phần code không bị conflict GIT merge tự động, phần conflict GIT thông báo hình dưới, phải edit tay, save lại, commit vào local, push lên remote Sau vào lại merge request trước F5 refresh lại, ta thấy GIT báo merge OK Nhìn lại Graph web tool Nên chọn branch master để dễ nhìn ... đuôi git vào, https://10.88.17.102/telema/android .git Git dùng HTTPS để giao tiếp thay SSH Ta dùng command line để sử dụng GIT trực quan ta dùng tool Atlassian SourceTree cho phép thao tác với GIT, ... commit vào local repository máy, GIT có local repository SVN không) vào local repository Khung liệt kê file bị thay đổi chi tiết nội dung thay đổi bên file Ở tab File status ta điền vào mục... conflict GIT merge tự động, phần conflict GIT thông báo hình dưới, phải edit tay, save lại, commit vào local, push lên remote Sau vào lại merge request trước F5 refresh lại, ta thấy GIT báo merge