Chào anh em, năm mới chúc anh em một năm phát tài, vạn sự như ý nhé
Chuyện là dạo này mình gặp một số trường hợp các bạn fresher, intern cứ bị chật vật khi làm việc với Git. Nên hôm nay mình lại tiếp tục 1 bài viết nói về Git, tất nhiên không phải là giới thiệu git là gì, các lệnh command bla bla, vì đã có rất nhiều bài về những nội dung này. Bài viết hôm nay mình xin chia sẻ về những gì mình biết trong quá trình làm việc với Git
1. Tinh chỉnh Terminal
Mình là một người thuộc trường phái xài git bằng terminal, chứ không thích sử dụng các ứng dụng hỗ trợ như Source Tree. Vậy nên để dễ quan sát trạng thái source code, branch đang làm việc, mình sử dụng Oh My Zsh kết hợp với PowerLevel10k, bạn có thể tham khảo cách setup chúng tại bài viết này: https://dev.to/abdfnx/oh-my-zsh-powerlevel10k-cool-terminal-1no0 .
Khi tinh chỉnh lại terminal, bạn có thể dễ dàng quan sát được status code, branch name, version của ngôn ngữ, thư viện, vv.vv
2. Dùng Alias để rút gọn câu lệnh
Vì sử dụng command git là chính, nên việc cứ phải gõ những câu lệnh quen thuộc hàng ngày mình thấy rất mất thời gian, vậy nên mình sử dụng alias trong zshrc để đại diện cho một số câu lệnh quen thuộc.
Thì lúc đó khi cần dùng command git, chúng ta chỉ cần gõ một vài ký tự
Đây là những alias mình dùng, còn bạn có thể sử dụng từ viết tắt miễn sao bản thân dễ nhận biết và dễ nhớ nhé.
3. Nên sử dụng Git pull --rebase
Vì sao ư ? Mình thấy nhiều bạn hay dùng "git pull origin main" để kéo code mới về local. Nếu xét về bản chất, thì nó sẽ thực hiện công việc tải xuống (fetch) tất cả các thay đổi từ nhánh main của kho lưu trữ origin và tự động hợp nhất (merge) những thay đổi đó vào nhánh hiện tại.
Trông có vẻ ổn, tuy nhiên lịch sử commit trên nhánh của bạn sẽ có nhiều trường hợp bị đảo lộn và rất khó theo dõi. Trong khi đó, nếu dùng "git pull --rebase origin main" (hay viết gọn là git pull -r origin main), nó cũng tải xuống các thay đổi từ nhánh main của kho lưu trữ từ xa origin, nhưng thay vì hợp nhất, nó sử dụng phương pháp "rebase" để kết hợp các thay đổi vào nhánh hiện tại của bạn.
Điều này giúp cho những commit trên nhánh của bạn ở dưới local sẽ được đưa đến cuối cùng trong lịch sử commit, và nó cũng giúp cho lịch sử được sạch và dễ theo dõi hơn, và nó còn giúp hạn chế conflict code.
4. Sử dụng Git reflog
Trong quá trình làm việc với git, sẽ có những tình huống mà bạn mắc sai lầm như là merge nhầm nhánh code, xóa mất commit, xóa branch, vv.vv vậy thì git reflog sẽ là phao cứu sinh cho bạn.
Nó sẽ hiển thị lưu trữ lịch sử các trạng thái source code ở từng thao tác, và bạn dễ dàng checkout đến những vị trí mà bạn cần quay lại (giống như du hành về quá khứ vậy đó). Chi tiết về cách sử dụng bạn có thể tham khảo ở bài viết trước đây của mình: https://viblo.asia/p/git-reflog-phao-cuu-sinh-cho-nhung-loi-lam-hay-gap-tren-git-x7Z4Dja2LnX
5. Perfect commit
Như thế nào là 1 Perfect commit, và làm sao để tuân theo nó. Theo cách nhìn nhận của mình, để có một perfect commit chúng ta cần đảm bảo:
- Mỗi commit nên chứa một thay đổi nhỏ và độc lập, giải quyết một vấn đề cụ thể hoặc thêm một tính năng nhỏ
- Tên commit nên mô tả rõ ràng những gì đã thay đổi và lý do tại sao những thay đổi đó được thực hiện
- Tuân thủ quy ước về đặt tên commit của dự án
Tất cả những điều đó sẽ giúp commit của bạn sạch sẽ, dễ review và bảo trì hơn. Giả sử bạn làm 2, 3 task xong commit 1 lần duy nhất, sau này khi release, bỗng có một tính năng bị lỗi, và bạn được yêu cầu reset phần code lỗi đó. Và lúc đó bạn lại loay hoay về việc tách cái phần code lỗi ra khỏi 2, 3 task code kia. Thay vì vậy, nếu bạn giữ được các commit độc lập, chứa những code cụ thể, thì bạn chỉ cần reset riêng cái commit đó thôi.
Vậy nếu trong 1 file code bạn thay đổi ở nhiều nơi, và muốn mỗi phần thuộc 1 commit thì sao. Nếu sử dụng lệnh "git add <filename.>" thông thường thì không được rồi. Lúc này bạn có thể sử dụng "git add -p".
Nó giúp bạn có thể tùy chọn riêng lẻ những phần code được đưa vào staging area trong 1 file.
Kết Luận
Còn một số phần nữa nhưng mình xin được chia sẻ ở những bài viết sau nhé, cảm ơn các bạn đã đọc, nếu thấy hay thì hãy Upvote cho mình để tiếp thêm động lực nhé. Thanks ae