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) hữu hiệu của Linux. Git là một hệ thống quản lý phiên bản (VCS), một loại VCS phân tán chạy nhanh, ổn định, dễ sử dụng
Định nghĩa Git là gì?
Git là một hệ thống quản lý phiên bản phân tán (distributed version control system). Nhờ Git, việc quản lý code và làm việc nhóm của developer trở nên đơn giản, thuận tiện hơn.
Khi được hỏi tính năng yêu thích nhất của Git là gì, anh Hiền cho rằng đối với anh, đó là Git Hooks – Cho phép những đoạn script ở phía client hoặc server có thể được kích hoạt tự động khi bạn chạy một lệnh git.
Githooks là một tính năng thú vị của Git.
Sự giống/khác nhau giữa các hệ thống quản lý phiên bản khác và Git là gì?
1. Giống:
Vì Git cũng là một hệ thống quản lý phiên bản (viết tắt: VCS), nên Git hỗ trợ:
Quản lý code và lịch sử thay đổi:
Ví dụ, bạn chỉnh sửa code và “trót dại” làm ra một đống bug? Bạn muốn quay trở lại trạng thái trước khi “nghịch ngợm”? Nếu không dùng VCS, bạn sẽ phải sao chép lại file trước khi chỉnh sửa, đồng thời phải thường xuyên cập nhật tên thư mục và tên file.
Làm việc nhóm:
Khi các thành viên trong nhóm muốn trao đổi code với nhau nhưng nếu không dùng VCS, họ sẽ phải:
Chép từng module, đoạn code vào usb rồi đưa cho nhau
Hoặc gửi các đoạn code nhỏ qua ứng dụng chat, mail…
Những cách trên đều rất thủ công, tốn resources và tiềm ẩn nhiều rủi ro. Các VCS (bao gồm Git) ra đời để khắc phục điều này.
2. Khác:
Git tiếp cận theo hướng phân tán (distributed approach) trong khi các VCS khác tiếp cận theo hướng tập trung (centralized).
Điểm khác biệt lớn nhất của Git là gì? Đó là khả năng tách nhánh (branch). Nhờ vào khả năng này mà Git đã mang đến những tính năng vượt trội dưới đây.
Những tính năng ưu việt của Git là gì so với SVN?
Nhờ tiếp cận theo hướng phân tán, Git mang đến những lợi ích vô cùng to lớn như hỗ trợ rất tốt cho teamwork, phân chia task, tổng hợp code trở nên dễ dàng hơn nhiều, cụ thể:
1. Sắp xếp công việc tốt hơn
Nghĩa là, bạn có thể tập trung giải quyết từng task mà không phải bận tâm lo lắng cho những task liên quan.
Nếu không dùng Git, khả năng cao là mọi người sẽ làm việc giẫm chân nhau, những task sắp hoàn thành sẽ bị trì hoãn. Ngoài ra, tất cả mọi task lớn nhỏ sẽ buộc phải hoàn thành hết trước khi deploy, bởi vì chỉ cần 1 task vẫn đang dang dở, cả phần mềm có thể bị sập.
2. Linh hoạt hơn khi phải làm cùng lúc nhiều task
Bởi vì bạn có thể cấu trúc công việc dễ dàng hơn nên việc làm nhiều task cùng lúc vô cùng dễ dàng. Ví dụ, cùng một lúc, chúng ta thường có một team làm tính năng mới, một vài team khác nâng cấp các tính năng hiện có, và một người fix bug.
Git hỗ trợ rất tốt cho làm việc nhóm
3. Tự tin hơn khi thử nghiệm những ý tưởng mới
Bạn có thể tách biệt việc thử nghiệm với dự án chính, điều này giúp nâng cao chất lượng code cũng như tính sáng tạo.
Nhìn chung, hiện nay Git được coi là tiêu chuẩn bất thành văn trong ngành. Nếu chưa biết về Git, bạn nên dành thời gian để bắt đầu tìm hiểu ngay. Vì, sớm hay muộn, bạn cũng sẽ thuộc về một team phải dựa dẫm vào nó.
4. Git cho phép chúng ta làm việc offline
Theo anh Thành Nhân, ở thời điểm hiện tại thì Git ưu việt hơn hẳn so với các hệ thống quản lý phiên bản tập trung như SVN.
Ví dụ, Git cho phép chúng ta làm việc offline trong một khoảng thời gian. Bạn chỉ cần internet cho nhu cầu hợp tác nhóm, hoặc lưu lịch sử commit code lên remote repos. Ngược lại, với SVN, mỗi khi sử dụng đều cần có kết nối đến máy chủ SVN.
5. Cách lưu trữ thông tin
Anh Jonathan chia sẻ rằng nếu so sánh với SVN và TFS, rõ ràng là Git hơn hẳn. Sự khác biệt cốt lõi trong cách quản lý storage và các nhánh của Git khiến cho việc merging cũng hoàn toàn khác.
Bên cạnh đó, cũng nhờ cách Git lưu trữ thông tin mà bạn có thể thực hiện vô vàn những điều thú vị để viết lại lịch sử commit.
Bổ dung thêm về tính năng này, anh Thành Nhân đưa ra một ví dụ khác. Khi tách nhánh, Git chỉ sử dụng 41 bytes cho một nhánh mới, giúp tiết kiệm không gian lưu trữ mà vẫn đảm bảo tốt nhu cầu công việc. Còn SVN, theo tôi biết, sẽ copy toàn bộ source code thành một bản mới khi tách nhánh.
6. Git miễn phí
Anh Đức Hiền cho rằng, nguyên do mà Git được yêu thích đến như vậy phần lớn là vì Git miễn phí. Nghĩa là, mọi người đều có thể bắt đầu sử dụng những chức năng cơ bản của Git mà không cần bất kì cơ sở hạ tầng server nào. Ngay cả Microsoft cũng đã bắt đầu dùng Git để host Windows source code.
Đặc biệt, Git được “sinh sau đẻ muộn” hơn nhiều, cho nên tốc độ phát triển nhanh chóng của nó lại càng đáng kinh ngạc.
Những lưu ý khi làm việc với Git là gì?
Phải tìm hiểu các nguyên tắc cốt lõi của Git
Anh Jonathan gợi ý bạn nên đọc cuốn Pro Git. Bạn không cần đọc cuốn sách này để biết cách dùng Git, nhưng nếu muốn sử dụng Git hiệu quả, bạn nên đọc kĩ.
Để tóm tắt lại, nếu là newbie, có 3 điều cơ bản bạn cần tìm hiểu/ghi nhớ trước tiên:
Git là một đồ thị có hướng và không có vòng lặp
Commit có tính bất biến
Các nhánh chỉ là con trỏ. Mọi điều còn lại đều bắt nguồn từ đây
Không nên áp dụng cách dùng CVS và SVN vào Git
Những lưu ý khi commit
Những lưu ý khi check-in
Đây là những lưu ý từ chính kinh nghiệm, sai lầm của bản thân:
Check in những files không thực sự liên quan vào một VCS: Việc này đặc biệt hay xảy ra với các dự án Python, khi mọi người check in các .pyc files của họ. Bạn có thể thiết lập .gitignore để lờ chúng đi. Và cũng nên dùng githooks để dọn dẹp chúng lúc đổi nhánh.
Check in những thứ hoàn toàn không nên: Ví dụ, mọi người rất hay hardcode mấy thứ như mysql passwords. Về khía cạnh bảo mật, lỗi này đúng là kinh dị. Mặt khác, nó cũng có nghĩa là bạn không thể chạy các chương trình tích hợp liên tục (Continuous Intergration – CI) vì tài khoản trong môi trường production (mong là) khác với môi trường test.
Quên không check-in code mới: Hậu quả là mấy ngày làm việc thành công cốc, chỉ vì không để ý đến cảnh báo của Git. Và trong trường hợp này, điều duy nhất có thể làm là rút kinh nghiệm để không lặp lại sai lầm tương tự mà thôi.
Phân nhánh thường xuyên
Dù chỉ làm việc một mình, bạn vẫn nên “branch early, branch often”, đừng nên làm mọi thứ trên nhánh master để
Tránh hình thành thói quen xấu
Tận dụng được tính năng xịn nhất của một VCS
Hãy chắc chắn là bạn có một nhánh staging với các tính năng đã được unit test đầy đủ trước khi nhập vào nhánh master.
UI của Git cần được cải thiện
Resource hướng dẫn sử dụng Git hiệu quả?
Pro Git bao quát mọi vấn đề về Git, gồm cả lý thuyết và ví dụ. Điều tuyệt vời nhất là sách được dịch ra nhiều ngôn ngữ, trong đó có cả tiếng Việt.
Atlassian’s Git resources có một số resource rất hữu ích, kèm theo hình minh họa bắt mắt, giúp người dùng nắm bắt các khái niệm dễ dàng hơn.
GitHub’s Git tutorial hướng dẫn thực hành từng bước, giúp tìm hiểu Git một cách trực quan.
Git cheat sheet tóm lược những nội dung quan trọng nhất. Bạn có thể in ra để dùng.
Discord là ứng dụng chat và gọi điện miễn phí, an toàn cho game thủ. Discord được cung cấp miễn phí cho máy tính và thiết bị di động. Thay vì phải trả phí để sử dụng TeamSpeak hay dùng Skype, bạn có thể đơn giản hóa dịch vụ chat cho game thủ với Discord miễn phí.
Zalo web là phiên bản Zalo online của ứng dụng chat phổ biến nhất hiện nay tại Việt Nam. Chỉ cần truy cập vào Chat.Zalo.me rồi đăng nhập Zalo, bạn có thể dễ dàng nhắn tin, gọi điện thoại miễn phí ngay trên trình duyệt web mà không phải cài đặt ứng dụng. Phiên bản Zalo online cũng có đầy đủ các tính năng cơ bản nhất, đảm bảo mang đến trải nghiệm tuyệt vời nhất cho người dùng mà không cần phải cài đặt phiên bản Zalo PC.
Telegram PC là ứng dụng chat, nhắn tin miễn phí trên điện thoại di động, giờ đây đã có phiên bản dành riêng cho máy tính để bàn. Những tính năng của Telegram Desktop sánh ngang với Skype, Viber, Zalo... nhưng chương trình lại gọn nhẹ hơn và độ bảo mật cao hơn rất nhiều.
Camtasia 2022 là công cụ quay video màn hình máy tính rất nhanh chóng và hiệu quả từ bất kỳ thiết bị nào. Với chất lượng hình ảnh và âm thanh tốt, hỗ trợ nhiều định dạng video phổ biến nhất hiện nay nên Camtasia Studio được rất nhiều người lựa chọn.
Google Drive - dịch vụ lưu trữ và đồng bộ hóa tập tin được tạo bởi Google giúp người dùng có thể lưu trữ tập tin trên đám mây, chia sẻ tập tin, và chỉnh sửa tài liệu, văn bản, bảng tính, và bài thuyết trình với cộng tác viên.
EVKey là phần mềm hỗ trợ gõ tiếng Việt được xây dựng dựa trên mã nguồn mở của Unikey nổi tiếng. Bộ gõ tiếng Việt EVKey có dung lượng nhỏ gọn đảm bảo đáp ứng đầy đủ các nhu cầu cơ bản của người dùng khi soạn thảo văn bản.
Opera Mini 8 PC là phiên bản trình duyệt Opera Mini dành cho máy tính với khả năng duyệt web tốc độ nhanh và cực kỳ linh hoạt. Với ứng dụng này, người dùng được toàn quyền kiểm soát việc truy cập, điều hướng, lưu trữ trang web, mở nhiều tab cùng lúc và bảo mật thông tin dữ liệu tuyệt đối cho mình.