Hôm nay mình sẽ giới thiệu cho các bạn về cách sử dụng git.
Git là một distributed version control system rất phổ biến trong thế giới open source. Ban đầu nó được sử dụng làm VCS cho linux kernel development. Sau này, nó ngày càng được sử dụng rỗng rãi hơn, ngay cả trong việc phát triển các sản phẩm thương mại. Mình thì cũng chưa thấy nó có gì mạnh hơn so với tortoise - một VCS cũng khá phổ biến khác. Chắc dùng nhiều mới thấy hết được.
Version control system là gì ?
Là một hệ thống quản lý một tập hợp các file cùng với lịch sử lưu trữ và thay đổi trên các file đó. File không nhất thiết là source code nhưng thường thì người ta chỉ dùng VCS cho quản lý mã nguồn của các dự án công nghệ thông tin.
Repository là gì ?
Là thùng chứa các file và history của file. Một VCS thường có nhiều người dùng. Mỗi người dùng lại có thể có nhiều repository
Distributed version control system là gì ?
Không nhất thiết bạn chỉ một central server để lưu trữ repository. Bạn có thể copy repository sang máy khác. Việc làm này gọi là clone. Ví dụ đơn giản nhất là khi bạn checkout một remote repo. Khi đó bạn đã thực hiện clone remote repo vào một local repo trên máy của bạn. Local repo sẽ luôn duy trì liên kết ngược lại remote repo. Liên kết này gọi là origin.
Git là gì ?
Là một distributed VCS. Khi quản lý phiên bản dùng git, bạn sẽ luôn có một local repo. Local repo này có thể có một remote repo. Các remote repo thường nằm trong github. Local repo hiển thị trên file system của bạn ở dạng một folder. Trong local repo luôn có một folder tên là .git chứa thông tin về local repo và cả origin của repo này (nếu nó liên kết với remote repo). Tất cả những file và folder trong local repo không thuộc .git gọi là working tree.
Tiến trình làm việc ?
Bạn tạo một file hay folder bất kỳ trong folder chứa .git folder. File hay folder này gọi là unversion. Bạn cần đánh index cho các file hay folder thì git mới quản lý chúng được. File hay folder sau khi được đánh index sẽ gọi là versioned.
Khi đánh index, một snapshot của local repo sẽ được chụp và lưu trữ trong staging area. Hành động đánh index và tạo snapshot này gọi là add.
Cho đến lúc này, file hay folder chưa thuộc local repo. Bạn cần thực hiện commit. Khi commit, các snapshot sẽ được di chuyển từ staging area đến local repo và một commit object được tạo ra. Commit object này chứa thông tin về hành động commit.
Nhưng cho đến lúc này, file hay folder vẫn chưa nằm trên remote repo để bạn chia sẻ với nhiều developer khác. Bạn cần thực hiện push để đẩy những file hay folder đó lên remote repo.
Khi cần cập nhật thay đổi từ remote repo bạn thực hiện pull.
Mỗi một repo của bạn dù là local hay remote đều có một default branch gọi là master. Mỗi branch sẽ chứa một tập hợp file và lịch sử riêng độc lập với các branch còn lại. Lợi ích của việc dùng branch là bạn có thể thêm tính năng chương trình trong các branch khác hoặc thực hiện fix bug trên một branch thay vì làm hết trong master. Sau khi hoàn tất thêm tính năng và fix bug, bạn có thể merge các thay đổi trên các branch đó vào master branch. Hành động chọn một branch gọi là checkout branch đó.
Git cũng cung cấp cho bạn chức năng so sánh giữa các branch: giữa master (của local repo) với origin/master (của remote repo).
Lệnh fetch là lệnh download dữ liệu từ remote repo về local repo nhưng chưa thực hiện merge thông tin đó lên working tree. Pull = fetch + merge
Revert là hành động restore snapshot từ staging area. Bạn chỉ có thể revert thay đổi trước khi commit thay đổi đó lên local repo vì như đã nói, commit sẽ làm di chuyển các snapshot từ staging area lên local repo.
Revision là phiên bản file và folder lưu trữ trong repo
Git còn hỗ trợ xóa tất cả các unversion file hay folder.
HEAD là tham chiếu luôn trỏ đến một commit object. Khi bạn commit, HEAD sẽ trỏ đến commit object vừa tạo ra. Khi bạn chuyển branch (switch branch), HEAD sẽ trỏ đến last commit của branch mới. Bạn có thể tham chiếu đến các commit object trước đó qua HEAD~1 hoặc HEAD~2. Sử dụng HEAD bạn có thể so sánh sự khác biệt giữa hai commit liên tiếp.
git diff HEAD~1 HEAD
Checkout: Là hành động chọn một branch hoặc tạo một local repo và đồng bộ một remote repo lên local repo.
Share Github: Là hành động bạn tạo một remote repo trên github và đồng bộ local repo lên github.
Fork: Một tính năng khá hay trong github. Có thể bạn muốn đóng góp sức lực cho một project nào đó hoặc muốn dùng một project nào đó đã có để làm điểm khởi đầu cho project của bạn. Để thực hiện điều đó, bạn có thể fork project. Project được fork sẽ được clone vào repository của bạn. Bạn thậm chí có thể propose (đề xuất) thay đổi trên một file đã có trong một project nào đó.
Không có nhận xét nào:
Đăng nhận xét